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

Python文件读写问题排查:仅单条符合条件数据写入目标文件

问题分析与代码修复

我来帮你定位代码里的问题,并且给出修复方案!

问题根源

你代码里的核心问题是没有正确遍历并处理每一行数据:
你先用data = file1.readline()读取了文件的第一行,然后进入for line in file1:循环——这个循环其实是从文件的第二行开始迭代的,但你在循环内部一直使用data(也就是第一行的内容)来处理,完全没用到当前循环的line变量!这就导致不管循环多少次,你都只在重复处理第一行的数据,后面的两行根本没被解析判断,自然只有第一行符合条件的内容被写入了。

修复后的代码(推荐写法)

这里推荐使用with语句来管理文件,它会自动帮你关闭文件,避免资源泄漏:

with open("inventory.txt", "r") as file1, open("purchasing.txt", "w") as file2:
    for line in file1:
        # 去除行首尾的空白字符,跳过空行(增强代码鲁棒性)
        items = line.strip()
        if not items:
            continue
        # 拆分每行数据为列表
        item = items.split()
        # 转换为整数进行比较
        qty = int(item[3])
        reorder = int(item[4])
        # 判断条件并写入目标文件
        if qty <= reorder:
            file2.write(f"{item[0]}\t{item[1]}\n")

其他可行写法(基础版)

如果你暂时不想用with语句,也可以直接修正原来的循环逻辑,确保每一行都被处理:

file1 = open("inventory.txt", "r")
file2 = open("purchasing.txt", "w")

# 直接遍历文件对象的每一行,不需要提前读取第一行
for line in file1:
    items = line.strip()
    item = items.split()
    qty = int(item[3])
    reorder = int(item[4])
    if qty <= reorder:
        file2.write(item[0]+"\t"+item[1]+"\n")

file1.close()
file2.close()

修复后的效果

运行修正后的代码后,purchasing.txt会包含两行内容:

to-56 Olive
to-65 Green

因为第二行的25(第4列)大于20(第5列),不符合条件,所以不会被写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:11:22