Python 进程文件(sys.argv[1])索引器错误:列表索引超出范围
这是我正在使用的源于实际编程的代码:Python 进程文件(sys.argv[1])索引器错误:列表索引超出范围,python,python-idle,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_
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])
在空闲状态下导入此模块并通过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
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
处理文件(“data.txt”)
文件“C:\Python26\read\u File\u 2.py”,第14行,进程文件中
进程文件(sys.argv[1])
索引器:列表索引超出范围
我怎样才能让这个程序在没有收到这个错误的情况下工作?非常感谢您的帮助。您应该离开
if __name__ == "__main__":
process_file(sys.argv[1])
退出
处理\u文件
功能。导入到IDLE时,确保进程\u文件
可用,并将文件名传递给它。看起来您已经获得了
if __name__ == "__main__":
process_file(sys.argv[1])
块的缩进级别与
process\u文件
定义的其余部分相同,因此当您从另一个模块调用process\u文件
时,它正在运行。我怀疑这可能是导致您出现问题的原因-请取消输入,以便如果与def
一致,是sys.argv[0]
还是sys.argv[1]
?你不是很坚定如果是1,我猜没有传递任何参数。首先,请发布导致错误的实际代码-注意,您的代码中有sys.argv[1]
,但回溯中有sys.argv[0]
。其次,请确保您发布的代码中的缩进是正确的-这在Python中更为重要,因为其中空格非常重要。我的错是,我尝试将代码更改为sys.argv[0],并复制了错误的错误消息。当我从命令行运行这个程序时,这会删除错误,但对IDLE中的问题(我并不担心这个问题)没有任何作用。那么IDLE中的问题是什么呢?如果您已将其退出,则在通过调用时无法命中它。当我通过进程_file()传递.txt文件时,IDLE仍会给出列表索引超出范围的错误。它。。。不能该函数中不再进行任何列表索引。您是否确保在更改模块后IDLE已重新加载模块?