Python可以';不能从文件中生成变量

Python可以';不能从文件中生成变量,python,python-3.x,file,variables,Python,Python 3.x,File,Variables,从一个文件中,我在第一列中有一个ID,然后在文本的第二列中有人的名字,ID/用户名用行分隔。我正在尝试为文件的第二列创建一个变量,该变量紧挨着正确的ID。然而,当我尝试这样做时,我得到一个错误,指出在赋值之前引用了局部变量“realName”。我的代码中也没有全局变量。任何反馈都将不胜感激 fileOpen=("details.txt","r") ID=input("What is your ID?") for line in fileOpen: details=line.strip()

从一个文件中,我在第一列中有一个ID,然后在文本的第二列中有人的名字,ID/用户名用行分隔。我正在尝试为文件的第二列创建一个变量,该变量紧挨着正确的ID。然而,当我尝试这样做时,我得到一个错误,指出在赋值之前引用了局部变量“realName”。我的代码中也没有全局变量。任何反馈都将不胜感激

fileOpen=("details.txt","r")
ID=input("What is your ID?")
for line in fileOpen:
    details=line.strip().split(",")
    if ID==details[0]:#id will always match something inside the file
        realName=details[1] 
        break
print("Hi, {0}".format(realName)) 

如果
name
与任何行的第一个字段不匹配,就会发生这种情况,因为只有在找到匹配项时才设置
realName
。发生这种情况时,可以使用
else:
子句提供默认值:

def userMenu(name):
    fileOpen=("details.txt","r")
    for line in fileOpen:
        details=line.strip().split(",")
        if name==details[0]:
            realName=details[1] 
            break
    else:
        realName = "Unknown user"
    print("hi {0}".format(realName))

由于if语句未运行,因此出现此错误。打开变量(“filename”、“r”)不会使该变量成为字符串。它只是一个指向类的指针。相反,您应该:

fileOpen=(“details.txt”,“r”)
ID=输入(“您的ID是什么?”)
对于fileOpen.read()中的行:#需要添加.read()方法以使fileOpen变量成为字符串
详细信息=line.strip().split(“,”)
如果ID==details[0]:#ID将始终匹配文件中的某些内容
realName=详细信息[1]
打破
打印(“Hi,{0}”。格式(realName))

请提供一个简短完整的程序来演示问题。由于无法重现这个问题,我们只能猜测。有关详细信息,请参阅。如果没有一行与条件
name==details[0]
匹配,则您从未设置
realName
,因此您将得到该错误。即使输入100%正确的用户名,我也会得到未知用户。有什么想法吗?我建议你在循环中添加一个print语句,这样你就可以看到什么是
详细信息[0]
。你可以发布文件内容的示例吗?文件中逗号后是否有空格?我添加了一个“print”(“user found”位于if语句之后,以查看它是否匹配,它将打印user found,确认登录正确,但在打印语句@Barmar中,名称仍然是未知用户