如何按firs更改文件中的最后一个参数

2024-09-30 12:33:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

立即归档:

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


Tags: 文件代码程序falsetrueparameterfilenamealldata
2条回答

您需要做的是打开一个临时文件,将结果写入该文件,然后用新文件替换旧文件:

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

因为,您的文件不是太大(比如说1GB),所以不需要临时文件。下面的解决方案可以帮助您。其想法是:

  1. 将文件内容转换为列表
  2. 拆分内部列表
  3. 根据您的情况修改列表
  4. 形成内部列表
  5. 最后将其写回同一个文件
  6. 打开模式应该是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)

相关问题 更多 >

    热门问题