该程序必须根据起始代码更改一行的最后一个参数。
现在提交文件:
312|fotelja snesko|bela|15|2900|fotelja|False
621|digimon tabure|crna|25|850|tabure|False
代码是:>> 312
文件之后:
312|fotelja snesko|bela|15|2900|fotelja|True
621|digimon tabure|crna|25|850|tabure|False
我现在的工作。
parameter = input("\nCode is >> ")
with open("komad_namestaja.txt", "r") as fileNAME:
allDATA = fileNAME.readlines()
for linija in allDATA:
linija = linija.split("|")
if parameter == linija[0]:
linija[6] = "True"
有了这个,我读了文件中的每一行,找到了我需要的行。我只需要在该行中将False
更改为True
。我怎样才能改变它?
答案 0 :(得分:1)
您需要做的是打开一个临时文件,将结果写入该文件,然后用新文件替换旧文件:
fh, abs_path = mkstemp() # Create a temporary file
with open(abs_path,'w') as new_file:
with open("komad_namestaja.txt", "r") as old_file:
for line in old_file:
linija = linija.split("|")
if parameter == linija[0]:
linija[6] = "True"
new_file.write(linija)
close(fh)
remove("komad_namestaja.txt") # Remove original file
move(abs_path, "komad_namestaja.txt") # Move new file to old file location
答案 1 :(得分:1)
因为,你的文件不是太大(让我们说1 GB),不需要临时文件。以下解决方案可以帮助您。我的想法是:
r+
,以便它可以读取和写入文件。让我们看看下面的代码:
with open('komad_namestaja.txt','r+') as f:
data = f.readlines()
output_data=[]
for i in data:
lst=i.split("|")
if(lst[0]=='312'):
lst[-1]='True\n'
output_data.append("|".join(lst))
f.seek(0)
f.writelines(output_data)