fileku.write(sys.argv[i+3]+'\n') IndexError: list index out of range

fileku.write(sys.argv[i+3]+'\n') IndexError: list index out of range

我还是 python 的新手,我想创建一个可以 read/write/append 根据命令行参数生成文本文件的程序。

这是我的代码:

导入系统

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: 列表索引超出范围

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

如果您使用

调用您的程序
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')

在您的 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 个元素