Python 当存在错误路径时,为什么fileinput不抛出错误?

Python 当存在错误路径时,为什么fileinput不抛出错误?,python,file-io,Python,File Io,当我用错误路径运行代码时,它不会抛出错误,但是文档说如果出现IO错误,将抛出操作系统错误。那么如何测试坏路径?fileinput.input返回迭代器,而不是临时列表: import fileinput def main() try: lines = fileinput.input() res = process_lines(lines) ...more code except Exception: print('

当我用错误路径运行代码时,它不会抛出错误,但是文档说如果出现IO错误,将抛出操作系统错误。那么如何测试坏路径?

fileinput.input返回迭代器,而不是临时列表:

import fileinput
def main()
    try:
        lines = fileinput.input()
        res = process_lines(lines)

        ...more code
    except Exception:
        print('is your file path bad?')

if __name__ == '__main__':
    main()
或使用列表转换:

with fileinput.input() as files:
    for line in files:
        process_line(line)
也就是说,只有当您实际迭代此对象时,才会打开文件

虽然我不推荐第二种方式,因为它是

您应该尽可能少地解析输出数据,然后尽快输出数据。这避免了大输入的问题,如果脚本在更大的管道中使用,则会显著加快处理速度

关于检查路径是否正确:

一旦您向下迭代到不存在的文件,迭代器将抛出一个异常:

lines = list(fileinput.input())
fileinput.input返回迭代器,而不是特殊列表:

import fileinput
def main()
    try:
        lines = fileinput.input()
        res = process_lines(lines)

        ...more code
    except Exception:
        print('is your file path bad?')

if __name__ == '__main__':
    main()
或使用列表转换:

with fileinput.input() as files:
    for line in files:
        process_line(line)
也就是说,只有当您实际迭代此对象时,才会打开文件

虽然我不推荐第二种方式,因为它是

您应该尽可能少地解析输出数据,然后尽快输出数据。这避免了大输入的问题,如果脚本在更大的管道中使用,则会显著加快处理速度

关于检查路径是否正确:

一旦您向下迭代到不存在的文件,迭代器将抛出一个异常:

lines = list(fileinput.input())

当您尝试读取/迭代输入结果时,会引发错误。可能函数进程行隐藏了错误?当您尝试读取/迭代输入结果时,会抛出错误。也许函数进程线隐藏了错误?那么我如何判断它是否是错误的文件路径?@TheRealFakeNews它回答了你的问题吗?那么我如何判断它是否是错误的文件路径?@TheRealFakeNews它回答了你的问题吗?
'abc\n'
Traceback (most recent call last):
  File "/tmp/script.py", line 6, in <module>
    for line in files:
  File "/home/mrmino/.pyenv/versions/3.7.7/lib/python3.7/fileinput.py", line 252, in __next__
    line = self._readline()
  File "/home/mrmino/.pyenv/versions/3.7.7/lib/python3.7/fileinput.py", line 364, in _readline
    self._file = open(self._filename, self._mode)
FileNotFoundError: [Errno 2] No such file or directory: '/this/does/not'