You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何移除subprocess.Popen结果中的换行符

解决subprocess.Popen输出元素带换行符的问题

嘿,我来帮你搞定这个换行符的烦恼!你用subprocess.Popen执行命令后,readlines()返回的其实是列表哦,可能你之前误解了它的类型~ 下面给你几个实用的解决办法:

方法1:遍历列表逐个去除换行符

直接用列表推导式遍历readlines()返回的结果,对每个元素调用strip()去掉首尾的换行符和空白字符:

result = subprocess.Popen("ls -1 | sed -e 's/\..*$//'", shell=True, stdout=subprocess.PIPE)
variables = [line.strip() for line in result.stdout.readlines()]

如果你的输出是字节串(Python3默认情况),可以先解码再处理:

variables = [line.decode('utf-8').strip() for line in result.stdout.readlines()]

方法2:先读取全部内容再按行分割

先把命令输出一次性读成完整字符串,再用splitlines()方法按换行分割,这个方法会自动忽略末尾的换行符:

result = subprocess.Popen("ls -1 | sed -e 's/\..*$//'", shell=True, stdout=subprocess.PIPE)
output = result.stdout.read().decode('utf-8')
variables = output.splitlines()

方法3:用更简洁的subprocess.check_output

subprocess.check_output()可以直接返回命令的输出结果,搭配text=True参数还能直接得到字符串类型的输出,不用手动解码:

import subprocess
output = subprocess.check_output("ls -1 | sed -e 's/\..*$//'", shell=True, text=True)
variables = output.splitlines()

这个方法还会自动检查命令执行是否成功,如果命令出错会抛出异常,比直接用Popen更省心。

内容的提问来源于stack exchange,提问作者Oz Giat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:48:56