实现rev命令功能:文本文件每行反转的代码异常问题排查
解决反转文本每行并保留空格的脚本问题
我来帮你搞定这个反转每行文本的脚本问题~你遇到的「输入行截断」问题,大概率是因为错误用了字符串分割(比如split())再反转拼接的方式——这种操作会直接丢失多余空格的语义,甚至导致内容处理异常。要完美保留空格,我们需要直接反转整个行字符串,而不是分割后的元素。
下面是修复后的完整Python脚本,完全满足你的需求:
import sys def reverse_lines(input_file): # 生成输出文件名:原文件名 + .rotate后缀 output_file = f"{input_file}.rotate" try: with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8') as outfile: for line in infile: # 直接反转整行字符串(包括空格、制表符等),处理换行符避免重复 reversed_line = line.rstrip('\n')[::-1] + '\n' outfile.write(reversed_line) print(f"处理完成!结果已写入 {output_file}") except FileNotFoundError: print(f"错误:找不到文件 {input_file}") except Exception as e: print(f"发生未知错误:{e}") if __name__ == "__main__": # 校验命令行参数数量 if len(sys.argv) != 2: print("用法:python reverse_lines.py <目标文本文件名>") sys.exit(1) reverse_lines(sys.argv[1])
关键细节说明:
- 完美保留空格语义:用
[::-1]直接反转整个行字符串,不会修改任何空格的位置和数量。比如输入「a b c」(两个空格、三个空格),反转后会是「c b a」,完全对应原空格布局。 - 换行符处理:先用
rstrip('\n')去掉每行末尾的换行符,反转后再加回来,避免出现重复换行或者换行符位置错误的问题。 - 健壮性优化:加入了文件不存在和通用异常捕获,同时校验命令行参数数量,避免用户误操作。
测试示例:
输入文件内容:
a b c hello world ! test line with leading spaces
输出的.rotate文件内容:
c b a ! world olleh secaps gnidael htiw enil tset
你可以直接运行这个脚本,比如python reverse_lines.py test.txt,就会生成test.txt.rotate文件,完全符合你的需求~
内容的提问来源于stack exchange,提问作者user9198794
相关产品推荐
相关产品推荐

