只读写一行,而不是完整的fi

2024-04-29 11:56:28 发布

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

我在下面的代码中有以下问题

我打开一个文件并将其加载到“csproperty”(Comment#open path)中。在每个打开的文件中,我要做三个更改(注释#更改参数)。然后我想将这三个更改写入文件并关闭它。我想每个文件都做这个文件

现在打开更改后的文件时,该文件的内容是原来的三倍。在内容一中,我可以看到我的第一个变化,在内容二中,我可以看到第二个变化,依此类推

我不明白为什么我的工具在一个更改的文件中写入完整的文件内容3次

我想这和写文件块有关。。。我尝试了很多方法,但没有一种方法是正确的

有什么建议吗

问候

for instance in cs_id:
    cspath.append(cs_id[n] + '/mypath/conf/myfile.txt')

    # open path
    f = open(cspath[n], "r")
    csproperties = f.read()
    f.close()

    #change parameters
    CS_License_Key_New = csproperties.replace(oms + "CSLicenseKey=", oms + "CSLicenseKey="+ keystore[n])
    Logfile_New = csproperties.replace(oms + "LogFile=", oms + "LogFile=" + logs + 'ContentServer_' + cs_id[n] +'.log')
    Pse_New = csproperties.replace(oms + "PABName=", oms + "PABName=" + pse + 'ContentServer_' + cs_id[n] + '.PSE')

    #write File
    f = open(cspath[n],'w')
    f.write(CS_License_Key_New)
    f.write(Logfile_New)
    f.write(Pse_New)
    f.close()

    n += 1

Tags: 文件path方法id内容newcloseopen
2条回答
CS_License_Key_New = csproperties.replace(...)
Logfile_New = csproperties.replace(...)
Pse_New = csproperties.replace(...)

内容有三种不同的副本

您正在尝试替换内容并将其保存到三个不同的变量中

你应该一次做一次

您在同一内容上进行了3次不同的替换。您应该将替换链接起来:

result = (csproperties
          .replace(oms + "CSLicenseKey=", oms + "CSLicenseKey="+ keystore[n])
          .replace(oms + "LogFile=", 
                   oms + "LogFile=" + logs + 'ContentServer_' + cs_id[n] +'.log')
          .replace(oms + "PABName=",
                   oms + "PABName=" + pse + 'ContentServer_' + cs_id[n] + '.PSE'))
...
f.write(result)

相关问题 更多 >