我有一個包含此資料的文本檔案(專案對應于代碼、條目 1、條目 2):
a,1,2
b,2,3
c,4,5
....
....
這里a,b,c..永遠都是獨一無二的
每次我在 python 中讀取這個檔案以創建一個新條目d,6,7或更新現有值時:說a,1,2to a,4,3.
我使用以下代碼:
data = ['a',5,6]
datastring = ''
for d in data
datastring = datastring str(d) ','
try:
with open("opfile.txt", "a") as f:
f.write(datastring '\n')
f.close()
return(True)
except:
return(False)
這會將任何資料附加為新條目。我正在嘗試這樣的事情,它檢查每一行的第一個字符:
f = open("opfile.txt", "r")
for x in f:
if(x[0] == username):
pass
我不知道如何對這兩個字符進行分組,以便對第一個字符進行檢查(可以說它是 id),如果檔案中已經有一個帶有 id 的條目,那么它應該被替換為新資料和所有其他資料保持不變,否則將作為新行專案輸入。
uj5u.com熱心網友回復:
將檔案讀入使用第一個欄位作為鍵的字典。更新相應的字典,然后將其寫回。
使用csv模塊來決議和格式化檔案。
import csv
data = ['a',5,6]
with open("opfile.txt", "r", newline='') as infile:
incsv = csv.reader(infile)
d = {row[0]: row for row in incsv if len(row) != 0}
d[data[0]] = data
with open("opfile.txt", "w") as outfile:
outcsv = csv.writer(outfile)
outcsv.writerows(d.values())
uj5u.com熱心網友回復:
首先將所有新行追加到檔案中。
其次,嘗試使用 write 來更新檔案中的行
def update_record(file_name, field1, field2, field3):
with open(file_name, 'r') as f:
lines = f.readlines()
with open(file_name, 'w') as f:
for line in lines:
if field1 in line:
f.write(field1 ',' field2 ',' field3 '\n')
else:
f.write(line)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382499.html
