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

如何通过循环将zip内文件名写入txt?附not writable报错解决

问题根因

调用open()方法打开file.txt时未指定文件操作模式,Python默认使用只读模式'r'加载文件,该模式下无写入权限,因此触发'not writable'报错。遍历zip包内文件名的逻辑本身没有错误。

修复方案

将打开目标文本文件的代码调整为显式指定写入模式即可,修复后的基础可运行代码如下:

import zipfile

# 指定写入模式'w',同时显式设置编码避免乱码
write_file = open('file.txt', 'w', encoding='utf-8')

file_names = zipfile.ZipFile('FileTest.zip','r')
for name in file_names.namelist():
    # 每个文件名后增加换行符,避免所有文件名挤在同一行
    write_file.write(f'{name}\n')
file_names.close()
write_file.close()
推荐优化写法

使用上下文管理器with处理文件IO操作,无需手动调用close()方法释放资源,避免资源泄漏问题:

import zipfile

with open('file.txt', 'w', encoding='utf-8') as write_file, zipfile.ZipFile('FileTest.zip', 'r') as zip_f:
    for name in zip_f.namelist():
        write_file.write(f'{name}\n')
常用文件打开模式说明
  • 'r':默认只读模式,仅支持读取文件内容,不可写入
  • 'w':覆盖写入模式,文件不存在则自动创建,文件已存在则清空原有内容后写入新内容
  • 'a':追加写入模式,文件不存在则自动创建,文件已存在则在原有内容末尾追加新内容
  • 写入文本时建议显式传入encoding='utf-8'参数,规避不同操作系统默认编码差异导致的乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:18:16