我如何检查是否已经写入某个txt并且如果是这样python则给出错误

时间:2016-12-07 10:50:50

标签: python-3.x

我正在做一个学校项目,我必须建立一个使用投票代码的投票系统。我需要帮助打开2个文件的代码,检查代码是否在那里,如果是,则给出值错误。

while True:
        Code = input("Enter your 6 digit code: ")    
        try:
            Code = int(Code)
            if "0" in str(Code):    break
            if len(str(Code)) != 6 :   raise ValueError
            else:   break
            readt = open("Trump.txt" , "r")
            readh = open("Clinton.txt" , "r")
            readhh = readh.read()
            readtt = readt.read()
            if Code in str(readtt) or Code in str(readhh):  raise ValueError
            else:   break
            readt.close()
            readh.close()
        except ValueError:
            print("Invalid")

2 个答案:

答案 0 :(得分:1)

以下是一些修复程序的指示:

while部分似乎通过raisebreak离开open圈。执行open的代码永远不会执行。

你也多次拨打with open(...)。这将成为问题,因为leaking file descriptors is a problem。请使用close语句。这样,您不能意外地打开文件。您的if ... else语句是在另一个{{1}}构造的后面,它将在每种情况下都离开循环。

你的变量名有点不透明,也许你想发明一些更有说服力的名字。

为什么有两个文件?不应该只有一个包含所有使用代码的文件吗?

答案 1 :(得分:0)

假设您在问题中提供了所有信息,这就是您的问题的解决方案:

def code_checker():
    codes = []
    with open('Trump.txt', 'r') as f1:
        for line in f1:
            codes.append(line.rstrip())
    with open('Clinton.txt', 'r') as f2:
        for line in f2:
            codes.append(line.rstrip())
    code = input('Enter your 6 digit code:\n')
    while True:
        if '0' in code or len(code) != 6:
            print('Invalid code\n')
            code = input()
            continue
        elif code in codes:
            raise ValueError

code_checker()