我仍然是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:列表索引超出范围
会发生什么?我的代码有什么问题吗? 谢谢:))
答案 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')