Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 进程文件(sys.argv[1])索引器错误:列表索引超出范围_Python_Python Idle - Fatal编程技术网

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已重新加载模块?