使用Python的fileinput找不到文件

时间:2016-10-26 12:49:25

标签: python file-io

给出以下代码:

# Edit build number in test report
print(path)  # TODO remove
html_report = fileinput.input(path, inplace=True)
for line in html_report:
    print(line.replace('$BUILD_NUMBER',
                       args.number).rstrip())
html_report.close()

我得到以下输出:

/home/jenkins/workspace/reports/report201610261053.html
Traceback (most recent call last):
  File "report_generator.py", line 58, in <module>
    for line in html_report:
  File "/usr/lib/python2.7/fileinput.py", line 252, in next
    line = self.readline()
  File "/usr/lib/python2.7/fileinput.py", line 321, in readline
    os.rename(self._filename, self._backupfilename)
OSError: [Errno 2] No such file or directory

如果我只使用命令:

gedit /home/jenkins/workspace/reports/report201610261053.html

我可以检查文件是否存在。事实上,如果没有,我会期望在fileinput.input()行中提出此错误,而不是在行循环中。

知道什么是错的?

2 个答案:

答案 0 :(得分:0)

你的“路径”价值是多少? 我认为你应该尝试使用绝对路径

您还可以检查用户的文件权限。

答案 1 :(得分:0)

我在您所显示的代码中没有看到任何错误。

  

我可以检查文件是否存在。事实上,如果没有,我会指望   此错误将在fileinput.input()行中引发,而不是在行中引发   循环。

只有在尝试打开文件并且它在for循环中发生时才会报告错误。

与您手动验证文件是否存在相比,您的代码是否可能在不同的用户下运行并且在该路径上看不到该文件?