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

如何将file.txt每行内容分别写入独立文件?

问题分析与解决办法

你的问题出在文件打开的时机不对!看你的代码:你只在循环外面打开了file0这一个文件,然后把所有行都塞进这个文件里了,循环里的cnt虽然在增加,但根本没触发新文件的创建——因为打开文件的代码根本没在循环里跑啊!

正确的写法(推荐用enumerate更简洁)

直接用enumerate遍历原文件的每一行,它会自动帮你维护行号(从0开始),每拿到一行就打开对应的新文件写入:

with open("file.txt", 'r') as f:
    # enumerate会返回(索引, 行内容),索引从0开始正好对应你要的file0/file1/file2
    for file_num, line in enumerate(f):
        # 每次循环都创建/打开对应的目标文件,写入当前行
        with open(f"file{file_num}", "w") as target_file:
            # 如果不想保留原文件里的换行符,可以加.strip('\n'),按需选择
            target_file.write(line)

或者调整你原来的代码结构

如果你想保留自己最初的思路,只要把打开目标文件的代码放进for循环里就行:

cnt = 0
with open("file.txt", 'r') as f:
    x = f.readlines()

# 把打开文件的操作移到循环内部,每一行对应一个新文件
for single_line in x:
    with open(f"file{cnt}", "w") as g:
        g.write(single_line)
    cnt = cnt + 1

为什么原来的代码不行?

再回顾下你的原代码逻辑:

  1. 先把所有行读进列表x
  2. 打开file0(此时cnt=0)
  3. 然后在循环里把x的每一行都写入这个已经打开的file0
  4. 循环里cnt虽然在加,但没有重新打开新文件的操作,所以file1和file2根本不会被创建

调整后,每循环一次就会打开一个新的fileN文件,写完就自动关闭,这样就能实现每行内容写入独立文件的需求啦。

内容的提问来源于stack exchange,提问作者Mr. Wizard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:51:54