folgendes Szenario:
Ich lese die Werte einer Config Datei ein, suche in einer anderen Datei nach diesen Werten und ersetze durch jene, welche ich eingelesen habe. Bei diesem Prozess wird aber alles vier mal geschrieben. Ich kenne die Stelle wo das passiert, kann aber nicht verstehen warum. Vielleicht hat jemand einen Tip, was ich falsch mache:
Code: Alles auswählen
def changecs(Instances, *para_list):
print 'INFO:: Opening ' + para_list[2]
cspath = Instances + '/' + para_list[2]
# OMSConnector.BCSAPHost_05 = X
print " :: Setting OMSConnector.LogFile to " + para_list[5]
pattern_log = 'OMSConnector.LogFile='
subst_log = 'OMSConnector.LogFile='+ para_list[5] + 'OMSConnector_' + para_list[0] + '.log'
print " :: Setting OMSConnector.ProtocolFile to " + para_list[2]
pattern_protocol = 'OMSConnector.ProtocolFile='
subst_protocol = 'OMSConnector.ProtocolFile='+ para_list[5] + 'OMSConnector_' + para_list[0] + '.prot'
print " :: Setting OMSConnector.WorkingDirectory to " + para_list[5]
pattern_work = 'OMSConnector.WorkingDirectory='
subst_work = 'OMSConnector.WorkingDirectory='+ para_list[5] + '/work'
print " :: Setting OMSConnector.DocumentDirectory to " + para_list[4]
pattern_document = 'OMSConnector.DocumentDirectory='
subst_document = 'OMSConnector.DocumentDirectory='+ para_list[4]
fh, abs_path = tempfile.mkstemp()
print "INFO:: Creating temp. working file"
# open temp file with content of org. file
with open(abs_path, 'w') as new_file:
print " :: Temp. working file created"
with open(cspath) as old_file:
# for every line in org file write in new file with replaced content
#-------------------------
# ICH DENKE HIER STIMMT WAS NICHT
#
for line in old_file:
new_file.write(line.replace(pattern_log, subst_log))
new_file.write(line.replace(pattern_protocol, subst_protocol))
new_file.write(line.replace(pattern_work, subst_work))
new_file.write(line.replace(pattern_document, subst_document))
new_file.write(line.replace(pattern_document, subst_document))
print " :: Setting OMSConnector.LogFile to " + 'OMSConnector.LogFile=' + para_list[5] + 'OMSConnector_' + para_list[0] + '.log ... done'
print " :: Setting OMSConnector.ProtocolFile to " 'OMSConnector.ProtocolFile='+ para_list[5] + 'OMSConnector_' + para_list[0] + '.prot ... done'
print " :: Setting OMSConnector.WorkingDirectory to " + 'OMSConnector.WorkingDirectory='+ para_list[5] + '/work ... done'
print " :: Setting OMSConnector.DocumentDirectory to " + 'OMSConnector.DocumentDirectory='+ para_list[4] + ' ... done'
print " :: Closing file"
print " :: Moving files"
os.close(fh)
# Remove original file
os.remove(cspath)
# Move new file
shutil.move(abs_path, cspath)
print " :: done"
print 'INFO:: ' + cspath + ' changed successful'
Danke euch