python子进程的输出不可见_python-输出子进程调用的命令行?

美观且可扩展的方法

我一直在使用这样的东西:

#!/usr/bin/env python3

import os

import shlex

import subprocess

import sys

def run_cmd(cmd, cwd=None, extra_env=None, extra_paths=None, dry_run=False):

if extra_env is None:

extra_env = {}

newline_separator = ' \\\n'

out = []

kwargs = {}

env = os.environ.copy()

# cwd

if 'cwd' is not None:

kwargs['cwd'] = cwd

# extra_env

env.update(extra_env)

for key in extra_env:

out.append('{}={}'.format(shlex.quote(key), shlex.quote(extra_env[key])) + newline_separator)

# extra_paths

if extra_paths is not None:

path = ':'.join(extra_paths)

if 'PATH' in env:

path += ':' + env['PATH']

env['PATH'] = path

out.append('PATH="{}:${{PATH}}"'.format(':'.join(extra_paths)) + newline_separator)

# Command itself.

for arg in cmd:

out.append(shlex.quote(arg) + newline_separator)

# Print and run.

kwargs['env'] = env

print('+ ' + ' '.join(out) + ';')

if not dry_run:

subprocess.check_call(cmd, **kwargs)

run_cmd(

sys.argv[1:],

cwd='/bin',

extra_env={'ASDF': 'QW ER'},

extra_paths=['/some/path1', '/some/path2']

)

样品运行:

./a.py echo 'a b' 'c d'

输出:

+ ASDF='QW ER' \

PATH="/some/path1:/some/path2:${PATH}" \

echo \

'a b' \

'c d' \

;

a b c d

功能摘要:

使巨大的命令行可读,每行一个选项

在sh -x之类的命令中添加cd,以便用户可以轻松区分其输出中的命令

显示cd,以及额外的环境变量(如果已将其赋予命令)。 这些仅在给定的情况下打印,从而生成最小的shell命令。

所有这些使用户可以轻松地手动复制命令,以在出现故障时运行它们,或者查看正在发生的情况。

已在Python 3.5.2,Ubuntu 16.04上测试。 GitHub上游。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双色球python十种算法_python : 蒙特卡罗算法 应用于双色球

参考书:算法设计与分析 王晓东 编著 :第7章 概率算法 7.5 蒙特卡罗算法http://www.gdfc.org.cn/datas/history/twocolorball/history_1.html 抓取双色球开奖数据2017001,09,11,14,20,25,26,152017002,15,19,23,24,25,32,032017003,01,04,08,15,27,32,16.…

红包指定分配金额php,php仿微信红包分配算法的实现方法_PHP

本文实例讲述了php仿微信红包分配算法的实现方法。分享给大家供大家参考,具体如下:/*** 红包分配:把一定金额随机分配给指定人数** param int $money 用于分配的金额* param int $num 分配人数*/function RandomMoney($money, $num) {echo &q…

python 大学教授整理_剑桥大学教授用时35天亲自整理,Python超详细的基础笔记

python简介python是一种面向对象的解释型计算机程序设计语言,python的是吉多范罗苏姆(Guido van Rossum)于1989年发明任何语言都有优缺点,python也不例外,python的优点是简单易懂、可移植性、可扩展性、可嵌入性,python的缺点&…

php 分析css,全面分析css属性选择器

1.[class~"flower"]:选中有flower的classclass"flower ss"class"ss flower"2.[class|top]:选择以top为top开头的class需要有—相连 或者单独的topclass"top-ss"class"top"class"top-ss"//选…

合振动的初相位推导_基于振动信号的机械设备故障诊断(一)

1.概述振动在旋转机械设备故障中占了很大比重,是影响设备安全,稳定运行的重要因素。振动直接反应了设备的健康状况,是设备安全评估的重要指标。通过对振动分析方法的调查,熟悉一般的振动分析流程及方法,从而对检测设备…

不安装oracle 连接数据库,不安装oracle 连接服务器oracle数据库方法

1:http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/ 下载你需要的Oracle Instant Client、免安装 Oracle 客户端使用 PL/SQL 连接 Oracle 大家都知道,用 PL/SQL 连接 Oracle ,是需要安装 Oracle 客户端软件的。有没…

python找出10000以内的质数_【Python学习】打印10000以内的所有素数

摘要: 普及一下素数,初中学的都忘记了 百度:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。 基本判断思路:在一般领域,对正…

linux 启动db2 服务器,Linux系统设置DB2等服务开机启动的过程

Linux系统中向要设置开机启动,就要通过代码来实现。通过编写脚本能够把服务加到Linux开机启动项中,本文就来介绍一下Linux系统中设置DB2等服务开机启动的过程。1.转到/etc/init.d 目录下。以root身份执行Shell代码cd /etc/init.d2.编写DB2启动脚本Shell代…

spring elasticsearch 按条件删除_SpringBoot2 高级案例(08):整合 ElasticSearch框架,实现高性能搜索引擎...

一、安装和简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。ElasticSe…

linux创建vnc服务器,五步建立一个VNC Linux服务器

【51CTO快译】VNC(Virtual Network Computing)可以让你登录进到远程服务器的桌面上(相比之下,SSH的X11只能让你在本地机器上打开几个窗口)。这个很有用,设置起来也十分方便。***步我是用的是vnc4(还有其他选项,比如TightVNC),所以…

python的六大数据类型中可以改变_在python中更改数组的数据类型

我通过生成一组随机数并将它们转换为int类型来创建数组。但是,我不认为我下面的方法是有效的。有没有最好的方法来改变数组中的数据类型?# standard normal distributed random numberscrandom.randn(5,5)carray([[-0.37644781, -0.81347483, -0.3689595…

linux脚本多个条件比较大小,shell脚本-比较两个整数大小

开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。用条件表达式(禁止if)进行判断并以屏幕输出的方式提醒用户比较结果。注意:一共是开发2个脚本。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数不对给予提示。read读入方式#…

git 创建webpack项目_webpack项目的搭建及环境构建

现如今,webpack已经快速进入前端开发人员的眼线(从1.0到4.X的版本的更新迭代),给前端开发也带来了很大的突破,webpack可以分析项目结构,模块化打包机,处理模块化依赖,转换成浏览器可运行代码。废话不多&…

部署Linux服务器实验报告,Linux服务器学习----tomcat 服务配置实验报告(一)

一、实验目的1. 掌握 tomcat 服务的搭建二、实验内容1. 搭建一台缓存 tomcat 服务器三、实验环境1. tomcat 服务器 centos7 对应主机 ip 为 10.10.64.1782. 客户机 win7 对应主机 ip 为 10.10.64.227四、环境搭建在java官网下载Linux的java1.配置Java的变量环境:tar…

python指定条件分类输出_python基础(二)条件判断、循环、格式化输出

继续上一篇,今天主要总结一下条件判断、循环、格式化输出一.条件判断python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样,否则就怎么怎么这样,格式如下:score int(…

linux编译框架的搭建,Linux精华篇—CentOS 7.4下源码编译构建LNMP架构

CentOS 7.4搭建LNMP最新版本LNMP:Linux7.4、ngnix1.13.9、mysql5.7.20、php7.1.10目录:第一部分 准备工作第二部分 安装nginx服务第三部分 安装MySQL数据库第四部分 搭建PHP运行环境第五部分 LNMP架构应用(搭建DISCUZ论坛)第一部分 准备工作一&#xff1…

oracle层级关系按列存储_几张图看懂列式存储

最近看到一篇很好资料,里面三言两语配上几个图就把列式存储(Column-based Storage)讲明白了,牛啊!最喜欢的就是这种浅显易懂就把背景知识讲得明明白白,而不是长篇大论的讲概念。1 为什么要按列存储列式存储(Columnar or column-ba…

linux fg 命令,Linux fg 命令 command not found fg 命令详解 fg 命令未找到 fg 命令安装 - CommandNotFound ⚡️ 坑否...

显示行号|选择喜欢的代码风格默认GitHubDuneLakeSidePlateauVibrantBlueEightiesTranquilfg 将后台作业放到前台终端运行。fg 命令安装:-bash: fg: command not found#Debianapt-get install bash#Ubuntuapt-get install bash#Alpineapk add bash#Arch Linuxpacman …

wps 宏 禁用_WPS表格如何解除宏禁用

WPS的办公软件个人感觉是挺好的,可惜有一次我在使用WPS表格(相当于Office excel)时,发现居然无法使用宏,怎么办?不用担心接下来学习啦小编举例简单的例子告诉大家WPS表格解除宏禁用的方法。WPS表格解除宏禁用的方法上面我已经给出了插件的下…

linux设备资源分配,基于Linux 简化 AMP 配置使其更方便更动态地分配资源

描述嵌入式系统一般分为两大类:需要硬实时性能的;和不需要硬实时性能的。过去,我们不得不做出艰难抉择: 选择实时操作系统的性能还是我们钟爱的 Linux 系统的丰富特性,然后努力弥补不足之处?如今,嵌入式开…