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

Python3.6读取txt行拼接字符串写入新文件结果异常如何解决

问题分析与修复代码

存在的问题

  • 字符串拼接顺序错误:代码中执行link = line+full_url把文件名放在了URL前缀前面,和预期的前缀加文件名的结构完全相反
  • 未处理行尾换行符:readline()读取文件每行时会携带行末的\n换行符,直接拼接会导致URL格式异常
  • 空行判断逻辑滞后:读取到文件末尾的空行时,代码会先完成拼接写入操作才判断跳出,导致末尾出现多余的无效URL拼接结果
  • 写入模式不合理:使用追加模式a打开输出文件,若目标文件之前存在残留内容会直接保留,导致输出结果出现多余的旧内容(例如你输出中的p100003.jpg就是旧文件的残留内容)
  • 文件资源管理不规范:直接调用open()后手动关闭文件,若程序中途报错会导致文件资源未正常释放

修复后的代码

full_url = "https://mysite/images/pic_person/small/"

# 使用with上下文管理器自动管理文件资源,无需手动close
with open("test.txt", "r", encoding="utf-8") as pic_file, open("full_name.txt", "w", encoding="utf-8") as full_file:
    for line in pic_file:
        # 去除行首尾的空白字符(包括换行符、空格等)
        filename = line.strip()
        # 跳过空行
        if not filename:
            continue
        # 按正确顺序拼接,末尾加换行符保证每行一条URL
        full_link = full_url + filename + "\n"
        print(full_link.strip())
        full_file.write(full_link)
print("file finished")

修改说明

  • 调整拼接顺序为URL前缀加文件名,符合预期结构
  • 用strip()方法去除读取行的换行符和多余空白,避免格式错误
  • 先判断行内容是否为空再执行写入操作,过滤空行和文件末尾的空内容
  • 将输出文件的打开模式改为w(写入模式),每次运行都会清空旧内容写入新结果,避免残留内容干扰
  • 使用with上下文管理器管理文件,自动处理文件关闭逻辑,更安全稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:10