python-3.x - 如何让子进程显示正在机器上执行的命令
问题描述
我可以使用以下函数在机器上执行命令,但我看不到 bash 提示符或发出的命令。
def test12():
global cmd_list, cmd_string
sub_proc = subprocess.Popen(cmd_list, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
def test13():
global cmd_list, cmd_string
sub_proc = subprocess.Popen(cmd_string, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
有没有办法路由/查看执行了什么命令以及 shell 提示符是什么?我已经让它将命令执行后显示的所有内容发送回主脚本。
解决方案
使用这些技术中的任何一种都不会获得 shell 提示符。在第一种情况下,不运行任何 shell。它可以是用于 unix 系统的 fork 和 exec,也可以是用于 Windows 的 ExecuteProcess。在第二种情况下,调用 shell 来执行一个命令。例如,在 linux 上,命令是SHELL
环境变量中的任何内容。在我的系统上它运行/bin/sh -c testprogram
,它运行程序而无需通过 shell 提示符。
如果您想查看该命令,请在运行程序之前将其打印出来。
推荐阅读
- python - 我在 SQLAlchemy 中的一对多关系有什么问题?
- apache-kafka - Kafka集群是数据库吗?
- reactjs - 如何让 webpack-dev-server 停止使用 React 惰性/Suspense 代码拆分来停止下载内容更改时不正确的块?
- javascript - 在 vue.js/nuxt.js 中使用 three.js 库客户端
- python - 用while循环每5个计数?
- machine-learning - 词汇量 SpaCy 模型“en_core_web_sm”的大小
- google-app-engine - 自定义重复间隔的谷歌云 cron.yaml 计划格式
- r - min 函数中需要 TRUE/FALSE 的缺失值
- ms-access - 纸质表格的 MS 访问表格
- r - 如何在一个绘图中加入来自不同数据集的绘图层 - ggplot2?