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 个元素
我还是 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
.