Python: 写入前截断txt文件
Python: truncate txt file before writing
我有一组 .txt 文件 (12),我想读取这些文件并将其写入 3 个输出 .txt 文件(因此每个输出都将包含来自所有 12 个文件的文本)。
我使用以下代码完成此操作,但文件不会覆盖已经存在的内容,而是附加文本。我意识到这可能是因为我使用“a”作为追加,但如果我使用“w”,则只有我的 12 个文档中的第一个文档被写入每个输出。
“truncate()”方法似乎没有效果。
def WriteFiles():
# import library
import glob
# read file names
txt_files = glob.glob('input/*.txt')
output_files = glob.glob('output*')
# loop trough outputs & files and append
for index_out, output in enumerate(output_files):
for index_in, file in enumerate(txt_files):
with open(file, 'r+') as f, open(output, 'a') as o:
print('Writing input {} to output {}'.format(index_in, index_out))
o.truncate()
o.write(f.read())
您可以在第一个 for
循环中更早地 open
输出文件。例如
for index_out, output in enumerate(output_files):
with open(output, 'w') as o:
for index_in, file in enumerate(txt_files):
with open(file, 'r+') as f:
print('Writing input {} to output {}'.format(index_in, index_out))
o.write(f.read())
这只会在第二个 for
循环开始之前打开并截断每个输出文件一次,并且 file
对象将照看输出文件中的当前位置。
我有一组 .txt 文件 (12),我想读取这些文件并将其写入 3 个输出 .txt 文件(因此每个输出都将包含来自所有 12 个文件的文本)。
我使用以下代码完成此操作,但文件不会覆盖已经存在的内容,而是附加文本。我意识到这可能是因为我使用“a”作为追加,但如果我使用“w”,则只有我的 12 个文档中的第一个文档被写入每个输出。
“truncate()”方法似乎没有效果。
def WriteFiles():
# import library
import glob
# read file names
txt_files = glob.glob('input/*.txt')
output_files = glob.glob('output*')
# loop trough outputs & files and append
for index_out, output in enumerate(output_files):
for index_in, file in enumerate(txt_files):
with open(file, 'r+') as f, open(output, 'a') as o:
print('Writing input {} to output {}'.format(index_in, index_out))
o.truncate()
o.write(f.read())
您可以在第一个 for
循环中更早地 open
输出文件。例如
for index_out, output in enumerate(output_files):
with open(output, 'w') as o:
for index_in, file in enumerate(txt_files):
with open(file, 'r+') as f:
print('Writing input {} to output {}'.format(index_in, index_out))
o.write(f.read())
这只会在第二个 for
循环开始之前打开并截断每个输出文件一次,并且 file
对象将照看输出文件中的当前位置。