我是Python的新手,但在這個方面很糾結。我正試圖更新一個有幾行資料的串列。有一部分是真/假。我想讓用戶輸入一個行號,他們可以把這個 "真 "換成 "假",把 "假 "換成 "真"。
到目前為止,我有以下方法,它允許我將檔案添加到串列中,但當我試圖更新它時,它顯示為空白。有誰能給我指出正確的方向嗎?
list1 = [] 。
with open("myfile.dat"/span>, 'r'/span>) as fp:
list1 = fp.readlines()
# 寫入檔案 with
open("myfile.dat"/span>, 'w') as fp:
hire_out = input("enter Pos Number")
for number, line in enumerate(list1):
if hire_out == True:
fp.write(list1)
uj5u.com熱心網友回復:
這種情況的發生是因為在Python中以write模式打開一個檔案,如果它不存在,它將創建它,如果它存在,將洗掉里面的所有內容。
你必須使用 open("filename", "a", encoding="utf-8")
如果該檔案不存在,這將創建該檔案,如果它已經存在,則在其內容的最后添加。
uj5u.com熱心網友回復:
有幾個問題:
- 如果你的輸入檔案是完全清晰的,(沒有其他臟的內容,只有True和False兩行),你可以轉換為一個布爾串列
list1 = [True if x.startedwith('True') else False for x in list1]。 hired_out,根據你的描述,應該是一個字串,可以決議成一個整數,所以你應該使用hire_out = int(input("Enter Pos Number")>。
- 你不需要列舉,你只需要使用
for number in range(len(list1))。
- 如果行
number等于hire_out,你將反轉布林值:應該使用if hire_out == number:而不是if hire_out == True: - 你可以使用
list1[number] = not list1[number]來反轉布林值。
- 在for回圈之后,
list1現在包含正確的內容(布林值),你可以使用fp.write(' '.join([str(x) for x in list1]))
代碼應該是
list1 = [] []
with open("myfile.dat"/span>, 'r'/span>) as fp:
list1 = fp.readlines()
list1 = [True if x. startswith("True") else False for xin list1]
with open("myfile.dat"/span>, 'w'/span>) as fp:
hire_out = int(input("enter Pos Number")
for number in range(len(list1))。
if hire_out == number:
list1[number] = not list1[number] 。
fp.write('
'.join([str(x) for x in list1] )
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/308555.html
標籤:
上一篇:根據共同的id合并排序的圖元串列
