簡體   English   中英

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

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

我還是 Python 新手,我想創建一個可以根據命令行參數讀/寫/附加文本文件的程序。

這是我的代碼:

導入系統

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

發生什么事? 我的代碼有什么問題嗎? 謝謝 :)

在你的 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 個元素。

如果你調用你的程序

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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM