You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环写入多文件内容时覆盖前置内容的问题

解决循环写入文件被覆盖的问题

嘿,我一眼就看出问题所在啦!你每次循环里打开输出文件的时候,大概率用的是默认的'w'写入模式——这个模式会在每次打开文件时清空之前的所有内容,所以循环跑完后,自然就只剩最后一次写入的数据了。下面给你两种靠谱的解决办法:

方法一:把输出文件的打开操作放在循环外面

这种方式最推荐,因为只打开一次文件,既高效又能避免重复清空的问题:

#!/usr/bin/env python3
import glob
import xml.etree.ElementTree as ET

# 用原始字符串处理Windows路径,避免转义问题
filenames = glob.glob(r"C:\Users\####\Desktop\BNC2\[A00-A0B]*.xml")

# 把输出文件的打开放在循环外,用'w'模式(只清空一次)
with open(r"C:\Users\####\Desktop\output.txt", 'w', encoding="utf-8") as outF:
    for filename in filenames:
        with open(filename, 'r', encoding="utf-8") as content:
            tree = ET.parse(content)
            root = tree.getroot()
            # 这里写你提取数据并写入的逻辑,比如:
            # outF.write(your_data + '\n')

方法二:用追加模式打开文件

如果因为某些原因必须在循环里打开输出文件,记得用'a'追加模式,这样每次写入都会加到文件末尾,不会清空之前的内容:

#!/usr/bin/env python3
import glob
import xml.etree.ElementTree as ET

filenames = glob.glob(r"C:\Users\####\Desktop\BNC2\[A00-A0B]*.xml")

for filename in filenames:
    with open(filename, 'r', encoding="utf-8") as content:
        tree = ET.parse(content)
        root = tree.getroot()
        # 用'a'模式打开,追加写入
        with open(r"C:\Users\####\Desktop\output.txt", 'a', encoding="utf-8") as outF:
            # 写入你的数据
            # outF.write(your_data + '\n')

另外提醒一下:Windows路径里的反斜杠最好用原始字符串(在路径前加r),不然像\U、\B这类字符会被当成转义字符,容易报错哦。

内容的提问来源于stack exchange,提问作者pglove

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:50:32