我在下面的代码中遇到以下问题。
我打开一个文件并将其加载到" 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
答案 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(...)
内容有三种不同的副本。
您正在尝试替换内容并将其保存为三个不同的变量。
你应该一次性完成。