Я пытаюсь объединить несколько TXT-файлов в один файл. Некоторые из файлов представляют собой текстовые текстовые файлы .txt, которые я создал заранее, а некоторые - файлы, написанные самим скриптом. Сценарий успешно объединяет некоторые файлы (те, которые я написал заранее), но не включает те, которые созданы скриптом, хотя он не вызывает ошибок. Это буквально, кажется, игнорирует их существование.Невозможно объединить файлы .txt с разными кодировками в Python
Я пробовал различные методы, в том числе и shutil
fileinput
, и даже с помощью cat
из subprocess.call
, но без удачи.
С терминала файлы, которые я создал заранее, являются «XML-документами» (хотя я фактически сохранил его как обычный текст, но он отформатирован как XML), а другие - «ASCII-текст». Я считаю, что это проблема, поскольку XML-файлы были .rtf, и они не сливались бы до того, как я их преобразовал, только первый из списка будет включен в выходной файл.
import os, itertools, subprocess, fileinput, shutil
os.chdir('/Users/MicTonutti/Dropbox/MRes/Individual Project/FEBio/Simulation')
forces = itertools.permutations([-1.5,-1,-0.5,0],3)
forces = list(forces)
force_node = 174
for i in range(0,len(forces)):
filename = '0_Insert' + str(i) + '.txt'
f = open(filename, 'w')
string_x = '<nodal_load bc="x" lc="2"> <node id="' + str(force_node) + '">' + str(forces[i][1]) + '</node> </nodal_load>\n'
string_y = '<nodal_load bc="y" lc="2"> <node id="' + str(force_node) + '">' + str(forces[i][2]) + '</node> </nodal_load>\n'
string_z = '<nodal_load bc="z" lc="2"> <node id="' + str(force_node) + '">' + str(forces[i][2]) + '</node> </nodal_load>\n'
f.write(string_x + string_y + string_z)
filename_2 = '1_Insert' + str(i) + '.txt'
g = open(filename_2, 'w')
string_1 = '<logfile>\n <node_data data="x;y;z" file = "coord_data' + str(i) + '.txt" delim=", "> </node_data>\n'
string_2 = '<node_data data="ux;uy;uz" file = "displacement_data' + str(i) + '.txt" delim=", "> </node_data>\n </logfile>\n'
g.write(string_1 + string_2)
files_list = ['Simulation 1.txt', filename, 'Simulation 2.txt', filename_2, 'Simulation 3.txt']
output_file = '/Users/MicTonutti/Dropbox/MRes/Individual Project/FEBio/Simulation/Python Output/FEBio Simulation Output' + str(i) + '.txt'
with open(output_file, 'w') as outfile:
for infile in files_list:
shutil.copyfileobj(open(infile), outfile)
Выход в основном выглядит следующим образом:
Текст "Simulation1.txt" + «Текст Simulation2.txt + Текст "Simulation3.txt", без файлов в середине Любой. идеи?
Спасибо.
Да, извините - мой код был отформатирован неправильно, как только я его скопировал. Цикл for включает все до конца. Anyways, flush() отлично работает! Спасибо. – michetonu