子进程在stdout和os.devnull之间选择

0

对于一个项目,我想编写一个我想在项目的各个部分中重复使用的代码。我需要执行一个命令,并希望能够在控制台中打印或使命令静音之间进行选择。我已经提出了,但是我不确定是否可以,并且“ with”是否可以这种方式正常工作:

import os
import sys
import subprocess

def run_subprocess(cmd, display_output : bool=False):
    if display_output:
        stdout = sys.stdout
    else:
        stdout = open(os.devnull, "w")
        
    with stdout as s:
        exit_code = subprocess.call([cmd], shell=True, stdout=s)
    return exit_code

这样可以吗?我应该改变一些东西吗?谢谢!

宫城先生

将前哨subprocess.DEVNULL用于/ dev / null或将默认值None用于stdout:

import subprocess

def run_subprocess(cmd, display_output: bool = False):
    stdout = None if display_output else subprocess.DEVNULL
    return subprocess.call([cmd], shell=True, stdout=stdout)

使用这些可使subprocess目标正确且以与系统无关的方式处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

模块os和模块子进程之间的区别?

bash是否有可能通过stdin / stdout在子进程的读取和写入之间“交互”交替?

我对sleep()有什么选择来同步父进程和子进程之间的传输?

子进程,将stderr转换为DEVNULL,但打印错误

Python子进程抑制stdout和stderr

Perl捕获子进程的STDERR和STDOUT

node.js子进程-生成和派生之间的区别

Python 2.7 和 3.8 之间的子进程或线程差异

golang-os.stdout和multiwriter之间的区别

如何在父进程和子进程之间发送带有 pipe() 的矩阵?

可以在父进程和子进程之间共享dict吗?

使用两个管道在父进程和子进程之间进行通信

是否可以在nodejs进程和Electron子进程之间进行通讯?

Linux在C中使用管道在父进程和子进程之间传递值?

accton(psacct)记录的CPU时间-父进程和子进程之间记录的时间关系

在float和double之间选择

输入和选择之间的间距

C和结构之间选择

“子shell”和“子进程”之间的确切区别是什么?

OS X-在Anaconda和自制的Python环境之间选择

子进程与父进程之间的pipe()

子进程之间的管道

Python - 带有 STDIN 和 STDOUT 的子进程

子进程:stdout和stderror似乎互换或混合

FILE *“ / dev / stdout”和stdout之间的区别

如何在python脚本和子进程之间切换pid?

为什么Unix和Windows之间的Python子进程Popen如此不同?

如何通过子进程在NodeJS和Python(pynput)之间进行通信

在ExecutorService的提交和ExecutorService的执行之间选择