读写一行不是完整文件

时间:2016-04-14 09:57:51

标签: python file

我在下面的代码中遇到以下问题。

我打开一个文件并将其加载到" csproperties" (评论#open路径)。在每个打开的文件中,我想进行三次更改(注释#change参数)。然后我想将三个更改写入文件并关闭它。我想为每个文件执行此文件。

当我现在打开更改的文件时,该文件的内容相同。在内容一中,我可以看到我的第一个变化,在内容二中,第二个变化,等等。

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

我认为它与#write文件阻塞有关...我尝试过serverell事情,但没有任何方法正常。

有什么建议吗?

亲切的问候

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

2 个答案:

答案 0 :(得分:1)

您在同一内容上进行了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)

答案 1 :(得分:0)

CS_License_Key_New = csproperties.replace(...)
Logfile_New = csproperties.replace(...)
Pse_New = csproperties.replace(...)

内容有三种不同的副本。

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

你应该一次性完成。