如何美化Python subprocess模块执行命令后的输出?
解决subprocess执行ls输出美化问题
你可以通过以下几步处理输出,让它和直接在Linux终端执行ls的格式一致:
- 解码字节串:
subprocess返回的输出是字节类型(b'...'),先用decode()转成普通字符串,Linux下默认用utf-8编码即可。 - 调整格式:先去除字符串首尾的换行和空白字符,再把内容里的换行符替换为空格,或者分割成文件名列表后用空格拼接,保证和终端
ls的空格分隔格式一致。
修改后的代码示例:
import subprocess proc = subprocess.Popen(['ls'], stdout=subprocess.PIPE) output = proc.stdout.read().decode().strip() # 解码并清除首尾空白 formatted_output = ' '.join(output.split('\n')) print(formatted_output)
执行后输出会变成:
file.txt main.py source test-page
如果想保留终端里ls的自动多列排版(文件较多时自动分栏),可以直接让subprocess把输出直接打印到终端,无需捕获stdout:
import subprocess subprocess.run(['ls']) # 直接执行,输出和终端原生ls完全一致
内容的提问来源于stack exchange,提问作者iraklikairakliirakli
相关产品推荐
相关产品推荐

