process_file(sys.argv [1])IndexError:列表索引超出范围

时间:2010-08-03 13:26:36

标签: python python-idle

这是我正在使用的代码来自实践编程:

 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

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

2 个答案:

答案 0 :(得分:0)

你应该移动

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

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

答案 1 :(得分:0)

看起来你已经有了

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

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