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
相关产品推荐
相关产品推荐

