我正在编写一个正在读取已处理文件(file_name)的函数。在已处理的文件(open_file1)中,所有行都是元组。我的问题在于:为了使用该程序,我必须始终以命令输入作为输入文件名开始。如果用户输入TEAM IDENTIFIER即第三个elif语句而没有输入输入文件名,则程序崩溃。所以,我所做的是在第三个elif语句中,我用os语句检查了输入文件的存在。如果输入文件不存在,我写了一个else语句来请求另一个命令(即输入输入文件名并再次启动)。但是,出于某种原因,当我输入命令作为TEAM IDENTIFIER时,程序不会处理第三个elif语句的else语句。有什么建议?提前致谢。
def main():
command=input('Input cmd: ')
while command.lower() !='quit':
if command.lower()=='help':
print("QUIT\n"\
"HELP\n"\
"INPUT filename\n"\
"TEAM identifier\n"\
"REPORT n HITS\n"\
"REPORT n BATTING\n"\
"REPORT n SLUGGING\n")
elif command.startswith('INPUT') and len(command)>6:
file_name=str(command[6:])
open_file1=new_list(file_name)
print(open_file1)
elif command.startswith('TEAM') and len(command)>5:
if os.path.isfile(open_file1):
team_name=str(command[4:])
for line in open_file1:
print(line[1])
else:
command=input('Input cmd: ')
command=input('Input cmd: ')
main()
ERROR:
Traceback (most recent call last):
File "C:\Users\Dasinator\Documents\Books IX\Python Examples\textbook examples\project 07\openfile.py", line 98, in <module>
main()
File "C:\Users\Dasinator\Documents\Books IX\Python Examples\textbook examples\project 07\openfile.py", line 81, in main
if os.path.isfile(open_file1):
UnboundLocalError: local variable 'open_file1' referenced before assignment
答案 0 :(得分:0)
问题在于您的行os.path.isfile(open_file1)
。 isfile
函数需要一个字符串,但是得到一个文件对象(如果存在open_file1
),或者一个未引用的变量(如果open_file1
不存在)。
我会用try-except块替换if-else语句:
elif command.startswith('TEAM') and len(command)>5:
try:
team_name=str(command[4:])
for line in open_file1:
print(line[1])
except UnboundLocalError:
command=input('Input cmd: ')