如何首先更改文件中的最后一个参数

时间:2015-12-08 21:26:48

标签: python list file

该程序必须根据起始代码更改一行的最后一个参数。

现在提交文件:

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。我怎样才能改变它?

2 个答案:

答案 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),不需要临时文件。以下解决方案可以帮助您。我的想法是:

  1. 将文件内容转换为列表
  2. 拆分内部列表
  3. 根据您的情况修改列表
  4. 形成innerLists
  5. 最后将它写回同一个文件。
  6. 打开模式应为r+,以便它可以读取和写入文件。
  7. 让我们看看下面的代码:

    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)