简体   繁体   中英

File read Python - IndexError: list index out of range

def compare():
        file1=open("Rules.txt")
        for rules in file1:
            rule = rules.split(",")
            break
        membersFile=open("Members.txt")
        for members in membersFile:
            member = members.split(',')
            break
        print (rule[0] + "," +member[1] + ","+ rule[1] + "," +member[2] + ","+  rule[2] + "," + member[3])
        if (rule[0]<=member[1]) and (rule[1]<=member[2]) and (rule[2]==member[  3]):
            print (member[0] + " is Continued")
        else:
            print (member[0] + " is Discontinued")
compare()

I am getting the following error:

print (rule[0] + "," +member[1] + ","+ rule[1] + "," +member[2] + ","+  rule[2] + "," + member[3])
IndexError: list index out of range

You need to actually read the file. Some thing like this:

def compare():
        with open("Rules.txt") as file1:
            for rules in file1.readlines():  // <-note readlines()
                rule = rules.split(",")
                break
        with open("Members.txt") as membersFile:
            for members in membersFile.readlines():  // <-here too
                member = members.split(',')
                break
        print (rule[0] + "," +member[1] + ","+ rule[1] + "," +member[2] + ","+  rule[2] + "," + member[3])
        if (rule[0]<=member[1]) and (rule[1]<=member[2]) and (rule[2]==member[  3]):
            print (member[0] + " is Continued")
        else:
            print (member[0] + " is Discontinued")

But actually, the break statements also seem to certainly be wrong, and possibly the split(",") also - as in the comments - really need a properly formmatted sample of the input, and a better description of the expected behavior.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM