当前位置: 首页 > 知识库问答 >
问题:

在python中检查输入文件的存在

宁飞宇
2023-03-14

我正在编写一个函数,该函数正在读取已处理的文件(文件名)。在已处理文件(open_file1)中,所有行都是元组。我的问题在于:为了使用该程序,我必须始终以命令输入作为输入文件名。如果用户在没有输入输入文件名的情况下输入团队标识符,即第三条elif语句,则程序崩溃。所以,我所做的是,在第三个elif语句中,我用一个os语句检查了输入文件的存在性。如果输入文件不存在,我写了一个else语句来请求另一个命令(即输入输入文件名并重新启动)。但是,由于某种原因,当我输入命令作为团队标识符时,程序没有处理第三条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()

错误:

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

共有1个答案

董畅
2023-03-14

问题出在你的行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: ')
 类似资料:
  • 我想检查输入字段是否为空。

  • 本文向大家介绍MATLAB检查C ++ MEX文件中的输入/输出数量,包括了MATLAB检查C ++ MEX文件中的输入/输出数量的使用技巧和注意事项,需要的朋友参考一下 示例 在此示例中,我们将编写一个基本程序,该程序检查传递给MEX函数的输入和输出的数量。 首先,我们需要创建一个实现“ MEX网关”的C ++文件。这是从MATLAB调用文件时执行的函数。 testinputs.cpp 首先,我

  • 问题内容: 尝试检查我要读取的文件是否存在。 问题答案: 这是另一种方法: 包装的用途和功能: p_DirName in varchar2, – schema object name p_FileName in varchar2 ) return number is l_file_loc bfile; begin l_file_loc := bfilename(upper(p_DirName),

  • 本文向大家介绍python检查指定文件是否存在的方法,包括了python检查指定文件是否存在的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python检查指定文件是否存在的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 我不想使用操作系统命令,因为这使它依赖于操作系统。 这在< code>tarfile、< code > tarfile . is _ tarfile(filename)中可用,用于检查文件是否为tar文件。 我无法在模块中找到任何相关命令。 编辑:为什么我需要这个:我有gzip文件列表,这些文件的大小各不相同(1-10 GB),有些是空的。在读取文件之前(使用),我想检查文件是否为空,因为对于空文

  • 问题内容: 如何在不使用Type语句的情况下查看文件是否存在? 问题答案: 如果你要检查的原因是可以执行类似的操作,则尝试使用 来打开它会更安全。检查然后打开可能会导致文件被删除或移动,或者介于检查和尝试打开文件之间。 如果你不打算立即打开文件,则可以使用 True如果path是现有的常规文件,则返回。这遵循符号链接,因此,对于同一路径,和都可以为。 如果你需要确保它是一个文件。 从Python