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

Python脚本读取文件夹文件名写入TXT仅存单个文件名问题求助

问题解决:Python脚本仅写入单个文件名到TXT文件

问题原因

你的脚本在循环内每次用'w'模式打开文件,该模式会清空文件原有内容并重新写入,所以循环结束后,TXT文件里只会保留最后一次写入的文件名;而print能正常输出所有文件名,是因为打印操作不存在内容覆盖的问题。

修复方案

方案1:推荐——一次性打开文件,循环写入(高效)

把文件操作放在循环外部,用with语句自动管理文件关闭,避免手动遗漏close()操作:

import os
path = 'C:/Users/XXX'
files = os.listdir(path)

# 用with语句打开文件,循环内持续写入内容
with open("write_demo.txt", 'w') as fp:
    for f in files:
        print(f)
        zip_file_name = os.path.basename(f).split(".")[0]
        print(zip_file_name)
        fp.write(zip_file_name + "\n")
print('Done Writing')

方案2:追加模式打开文件(不推荐,效率较低)

如果一定要在循环内操作文件,改用'a'追加模式,该模式会在文件末尾添加内容而不覆盖原有内容:

import os
path = 'C:/Users/XXX'
files = os.listdir(path)

for f in files:
    print(f)
    zip_file_name = os.path.basename(f).split(".")[0]
    print(zip_file_name)
    # 用追加模式打开文件
    with open("write_demo.txt", 'a') as fp:
        fp.write(zip_file_name + "\n")
print('Done Writing')

额外优化:仅处理文件(可选)

如果你的目标是只读取文件夹内的文件而非子文件夹,可以添加文件判断逻辑:

import os
path = 'C:/Users/XXX'
files = os.listdir(path)

with open("write_demo.txt", 'w') as fp:
    for f in files:
        file_full_path = os.path.join(path, f)
        # 判断当前条目是否为文件
        if os.path.isfile(file_full_path):
            print(f)
            zip_file_name = os.path.basename(f).split(".")[0]
            print(zip_file_name)
            fp.write(zip_file_name + "\n")
print('Done Writing')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:25:27