0

这是我正在使用的来自 Practical Programming 的代码:

 import sys

def process_file(filename):
 '''Open, read, and print a file.'''

 input_file = open(filename, "r")
 for line in input_file:
  line = line.strip()
  print line
 input_file.close()
 if __name__ == "__main__":
  process_file(sys.argv[1])

在 IDLE 中导入此模块并通过 process_file() 传递文本文件参数后,我收到此错误:

    Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    process_file("data.txt")
  File "C:\Python26\read_file_2.py", line 14, in process_file
    process_file(sys.argv[1])
IndexError: list index out of range

如何在不收到此错误的情况下使该程序正常工作?任何帮助表示赞赏。

4

2 回答 2

0

你应该搬家

if __name__ == "__main__":
    process_file(sys.argv[1])

process_file功能。导入 IDLE 时确保process_file可用并将文件名传递给它。

于 2010-08-03T13:32:05.620 回答
0

看起来你有

if __name__ == "__main__":
  process_file(sys.argv[1])

块在与定义的其余部分相同的缩进级别,因此当您从另一个模块process_file调用时它正在运行。process_file我怀疑这可能会导致您的问题 - 取消缩进,以便ifdef.

于 2010-08-03T13:32:21.443 回答