fileku.write(sys.argv [i + 3] +'\ n')IndexError:列表索引超出范围

时间:2017-07-11 13:35:33

标签: python python-2.7 python-3.x argv sys

我仍然是python的新手,我想创建一个程序,可以根据命令行参数读/写/追加文本文件。

这是我的代码:

导入sys

def prosesfile():
        fileku=open(sys.argv[1],sys.argv[2])
        if(sys.argv[2] == 'w'):
                for i in range(5):
                        fileku.write(sys.argv[i+3]+'\n')
                print('proses tulis file selesai.')
        elif(sys.argv[2] == 'r'):
                for i in fileku:
                        print(i)
                print('proses baca selesai.')
        elif(sys.argv[2] == 'a'):
                for i in range(5):
                        fileku.write(sys.argv[i+3]+'\n')
                print('proses append file selesai.')

prosesfile()

然后我试图执行:

python3 program.py textfile.txt w word1 word2

然后我收到了一个错误:

File "program.py", line 14, in prosesfile
fileku.write(sys.argv[i+3]+'\n')

IndexError:列表索引超出范围

会发生什么?我的代码有什么问题吗? 谢谢:))

2 个答案:

答案 0 :(得分:1)

在for循环中:for i in range(5):变量i被赋值为0,1,2,3,4;因此,当您尝试访问sys.argv[i+3]时,i+3为3,4,5,6,7,但sys.argv中只有4个元素。

答案 1 :(得分:0)

如果您使用

致电您的计划
python3 program.py textfile.txt w word1 word2

您将共有5个命令行参数。循环:

for i in range(5):
    fileku.write(sys.argv[i+3]+'\n')

将尝试访问除此之外的元素。

更改为:

for arg in sys.argv[3:]:
    fileku.write(arg+'\n')