如何让指定路径下所有TXT文件的反转输出独立存储?
实现单个TXT文件对应独立反转输出文件
原代码的问题
- 代码只读取了每个TXT文件的最后一行——
for line in f循环结束后,line变量仅保留最后一行内容 - 用
os.system调用echo写文件既冗余又缺乏灵活性,Python本身就有完善的文件操作能力 - 所有反转内容都追加到同一个
output.txt,无法实现按输入文件拆分存储
修改后的代码
import os path = '/txt_files_path/' # 替换为你的TXT文件实际路径 for filename in filter(lambda p: p.endswith(".txt"), os.listdir(path)): # 拼接输入文件的完整路径 input_file = os.path.join(path, filename) # 生成对应输出文件名,例如"demo.txt"会转为"demo_reversed.txt" output_filename = f"{os.path.splitext(filename)[0]}_reversed.txt" output_file = os.path.join(path, output_filename) # 读取输入文件并处理每行反转 with open(input_file, 'r') as f: # 遍历每行,去除换行符后反转,再补回换行符 reversed_lines = [line.rstrip()[::-1] + '\n' for line in f] # 写入独立输出文件 with open(output_file, 'w') as out_f: out_f.writelines(reversed_lines)
核心改动说明
- 生成独立输出文件:通过
os.path.splitext拆分文件名与后缀,拼接_reversed.txt作为输出文件名,确保每个输入文件对应唯一输出文件 - 正确处理所有行:用列表推导式一次性处理文件全部内容,避免原代码只取最后一行的问题
- 使用Python原生文件操作:替代系统命令调用,既规避跨系统兼容性问题,又能直接控制写入逻辑(覆盖模式
w会自动创建新文件,无需担心重复追加)
可选调整:反转整个文件内容
如果你的需求不是每行单独反转,而是将整个文件内容整体倒转(比如"abc\n123"转为"321\ncba"),可以改用以下逻辑:
import os path = '/txt_files_path/' for filename in filter(lambda p: p.endswith(".txt"), os.listdir(path)): input_file = os.path.join(path, filename) output_filename = f"{os.path.splitext(filename)[0]}_reversed.txt" output_file = os.path.join(path, output_filename) with open(input_file, 'r') as f: # 读取整个文件内容并反转 full_content = f.read() reversed_content = full_content[::-1] with open(output_file, 'w') as out_f: out_f.write(reversed_content)
内容的提问来源于stack exchange,提问作者Dan Gon
相关产品推荐
相关产品推荐

