Python如何替换文本文件指定内容?复制修改后新文件为空如何解决
问题原因
新生成文件为空是因为你第二次打开目标task文件时使用了w+模式:w+模式的核心特性是打开文件时直接清空所有原有内容,你第一次把task1.py的内容写入新文件后,马上用w+模式重新打开该文件,刚写入的内容直接被清空,后续读取到的就是空字符串,最终写入文件的自然是空内容。
修复方案
- 把第二次打开目标task文件的模式从
w+改为r(只读模式,不会修改原有内容)即可解决空文件问题 - 可以进一步简化代码逻辑,避免重复打开文件、手动调用
close()的疏漏,推荐统一用with上下文管理器操作文件,自动处理文件关闭。
以下是优化后的可运行代码:
# 读取计数文件 with open('Tasks/Task_Counter.txt', 'r') as c: okay = c.read().splitlines() which_task = int(okay[0]) this_task = which_task + 1 which_port = int(okay[1]) this_port = which_port + 1 # 更新计数文件 with open('Tasks/Task_Counter.txt', 'w') as c: c.write(f"{this_task}\n{this_port}") # 读取模板文件内容+替换端口 with open('Tasks/task1.py', 'r') as q: content = q.read() content = content.replace('9250', str(this_port)) # 写入新的task文件 with open(f"Tasks/task{this_task}.py", 'w') as f: f.write(content)
内容的提问来源于stack exchange,提问作者programming_for_fun
相关产品推荐
相关产品推荐

