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

Python文件追加异常:循环未修改目标文件,生成新文件并清空原内容

问题排查与修复方案

嘿,我来帮你揪出代码里的问题——你遇到的这两个现象其实都是文件路径处理错误导致的,咱们一步步拆解:

为啥文件跑到桌面去了?

os.listdir(directory) 只会返回目标目录里的纯文件名(比如test.ADC),不是完整路径。当你直接用 open(filename, 'a') 时,Python会在当前脚本的工作目录(大概率是桌面,因为你可能直接在桌面运行这个脚本)创建或打开文件,完全没碰你指定目录里的那些.ADC文件!

原文件为啥被“清空”?

其实你的原文件根本没被修改!你看到的那个只有Vcomb内容的文件,是Python在桌面新建的同名文件,而目标目录里的原文件其实完好无损(除非你之前测试时不小心用了'w'模式覆盖,但当前代码用的是'a',不会清空文件)。

修复后的代码

核心就是把目录路径和文件名拼接成完整文件路径,同时我还加了几个实用优化:

import os

print("Enter Date & Time: (YYYYMMDDhhmm)")
vdate = input().strip()
vline = f"VERIFY 48:0x{vdate}"

print("Please Use: Verified by:___(Full name)____ on ___(Date)___")
vname = input().strip()
vcomments = f" // {vname}"

Vcomb = vline + vcomments
print(Vcomb)

print("Copy paste full directory path here")
directory = input().strip()

for filename in os.listdir(directory):
    if filename.endswith(".ADC"):
        # 拼接完整文件路径,这是关键!
        full_file_path = os.path.join(directory, filename)
        # 用with语句自动管理文件,不用手动close,更安全
        with open(full_file_path, 'a') as f:
            # 加个换行符,避免新内容和原文件最后一行粘在一起
            f.write(Vcomb + '\n')

额外小提示

  • 加了.strip()处理所有输入,避免用户不小心输入的前后空格搞砸路径或内容
  • 写入时加了'\n',保证每次追加的内容是独立一行,格式更整洁
  • with语句是Python操作文件的最佳实践,就算脚本中途出错,也能确保文件被正确关闭,不会损坏文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:15:48