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 对象将照看输出文件中的当前位置。