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

如何在subprocess中执行多命令时仅将ls结果存入变量x?

解决方法

有两种常见的实现方式,可根据你的实际需求选择:

方式一:重定向第二个命令的输出(同shell会话执行)

如果需要在同一个shell会话中执行两个命令,可通过重定向将pwd的输出丢弃,仅保留ls的结果:

import subprocess

# 将pwd的输出重定向到/dev/null,仅保留ls的输出
cmd = "ls; pwd > /dev/null"
# 捕获stdout,text=True将字节流转为字符串,strip()去除首尾空白
x = subprocess.run(cmd, shell=True, capture_output=True, text=True).stdout.strip()

方式二:分开执行两个命令(更安全,推荐)

如果两个命令没有依赖关系(比如不需要共享shell环境),分开执行可以避免shell=True带来的安全风险(比如命令注入),更稳妥:

import subprocess

# 执行ls并捕获结果
x = subprocess.run(["ls"], capture_output=True, text=True).stdout.strip()
# 执行pwd,无需捕获结果
subprocess.run(["pwd"])

补充说明

  • capture_output=True等价于同时设置stdout=subprocess.PIPE和stderr=subprocess.PIPE,用于捕获命令的输出。
  • text=True(Python 3.7+支持)让返回的stdout是字符串类型,无需手动解码。
  • 如果需要忽略ls的错误输出,可以添加stderr=subprocess.DEVNULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:03:33