如何在Python中将多个命令行参数对应文本文件内容打印在同一行
问题原因
- Python内置
print()函数默认会在输出内容末尾追加换行符\n,你每读取一个文件就调用一次print(),自然每个文件的内容都会单独占一行 - 代码中
f.close()是冗余写法:with open()上下文管理器会在代码块执行完成后自动关闭文件,不需要手动调用关闭方法
解决方案
方案1:先收集所有内容再统一打印(推荐,逻辑更清晰)
先把所有文件的内容读取后存入列表,再用空格拼接所有内容一次性打印,不会出现多余的换行或空格问题:
from sys import argv, exit if len(argv) < 2: print("Missing command-line argument") exit(1) content_list = [] for file_path in argv[1:]: with open(file_path, "r", encoding="utf-8") as f: # 若需要保留文件内部的换行仅删除末尾的换行,可替换为 f.read().rstrip('\n') content_list.append(f.read().strip()) print(' '.join(content_list))
方案2:遍历打印时修改end参数
如果不想额外占用内存存储所有文件内容,可以在调用print()时修改end参数,避免默认追加的换行符,最后再统一输出换行:
from sys import argv, exit if len(argv) < 2: print("Missing command-line argument") exit(1) file_count = len(argv[1:]) for idx, file_path in enumerate(argv[1:]): with open(file_path, "r", encoding="utf-8") as f: content = f.read().strip() # 最后一个文件内容末尾输出换行,其余文件内容末尾输出空格分隔 print(content, end='\n' if idx == file_count - 1 else ' ')
内容的提问来源于stack exchange,提问作者Skarbietae
相关产品推荐
相关产品推荐

