You need to enable JavaScript to run this app. 如何用Python向文件夹内所有文件追加文本?报PermissionError如何解决
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python向文件夹内所有文件追加文本?报PermissionError如何解决

代码存在的问题
  • 核心错误:你在循环中直接把文件夹路径传给了open()函数尝试写入。os.listdir(dir)仅返回目标目录下的文件/子文件夹的名称,没有和父目录拼接得到完整的文件路径,直接写入文件夹是系统不允许的操作,因此触发权限报错。
  • 隐藏问题1:没有判断遍历到的对象是文件还是子文件夹,如果folder1下存在子目录,就算拼接路径后依然会触发同类错误。
  • 隐藏问题2:循环内打开的文件没有及时关闭,仅在循环结束后关闭了最后一次打开的文件句柄,可能造成资源泄漏,也容易出现写入内容丢失的问题。
  • 命名不规范:使用了Python内置函数名dir作为变量名,会覆盖原内置函数的功能,属于不规范写法。
修复方案

修改后的可运行代码如下:

import os

# 不要用内置函数名dir做变量名,替换为target_dir
target_dir = r'C:\Users\User1\Desktop\folder1'
append_content = "My desired text\n"

for file_name in os.listdir(target_dir):
    # 拼接得到完整的文件路径
    full_path = os.path.join(target_dir, file_name)
    # 只处理文件,跳过子文件夹
    if os.path.isfile(full_path):
        # 用with上下文管理器自动关闭文件,不需要手动写close
        with open(full_path, 'a', encoding='utf-8') as f:
            f.write(append_content)
代码修改说明
  1. 替换变量名dir为target_dir,避免覆盖内置函数
  2. 新增路径拼接逻辑,得到每个文件的完整访问路径
  3. 增加文件类型判断,跳过目录下的子文件夹
  4. 使用with上下文管理器管理文件句柄,自动完成资源释放,避免手动关闭遗漏的问题
  5. 新增encoding参数指定编码,避免写入中文时出现乱码问题(如果仅写入英文可省略)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 11:06:00