这是我正在使用的代码来自实践编程:
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
如何在不收到此错误的情况下使该程序正常运行?任何帮助表示赞赏。
答案 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
时,它会被运行。我怀疑这可能会导致您的问题 - 因此if
与def
一致。