1.在Python 3.5之后的版本中,官方文档中提倡通过subprocess.run()函数替代其他函数来使用subproccess模块的功能; 2.在Python 3.5之前的版本中,我们可以通过subprocess.call(),subprocess.getoutput()等上面列出的其他函数来使用subprocess模块的功能; 3.subprocess.run()、subp
subprocess.getstatusoutput(cmd)执行cmd命令,返回一个元组(命令执行状态, 命令执行结果输出),其功能类似于commands.getstatusoutput()。 参数说明: args: 要执行的shell命令,默认应该是一个字符串序列,如[‘df’, ‘-Th’]或(‘df’, ‘-Th’),也可以是一个字符串,如’df -Th’,但是此时需要把shell参数的...
capture_output:设置为True,将捕获stdout和stderr,从而获执行命令后取返回的内容。 例: # 当前文件夹下有 a.py、b.py、c.py 三个文件,我们执行 “ls -l”来获取一下文件信息 import subprocess # args传入str的方式 有参数传入需shell=True,encoding可以指定capture_output(stdin、stdout、stderr)的编码格式 r...
importsubprocesstry:res=subprocess.run("ls no_exsit.txt",shell=True,check=True)exceptsubprocess.CalledProcessErrorase:print("returncode:",e.returncode)print("cmd:",e.cmd)print("output:",e.output)print("stderr:",e.stderr>>>ls:无法访问'no_exsit.txt':没有那个文件或目录returncode:2cmd:ls...
subprocess模块可以生成新的进程,连接到它们的input/output/error管道,同时获取它们的返回码。 二、基本操作方法 1. subprocess的run、call、check_call、check_output函数 subprocess.run(args[, stdout, stderr, shell …]):执行args命令,返回值为CompletedProcess类; ...
subprocess模块还提供了python2.x版本中commands模块的相关函数。 subprocess.getstatusoutput(cmd) 实际上是调用check_output()函数,在shell中执行string类型的cmd指令,返回(exitcode, output)形式的元组,output(包含stderr和stdout)是使用locale encoding解码的字符串,并删除了结尾的换行符。
4) getoutput():仅得到输出而不检查返回值 我们会发现带有 check 的接口函数,都会检查返回值。如果不希望检查返回值,可以使用另外一个接口函数 getoutput()。该接口函数接收一个字符串命令,而且会另外启动一个 shell 来运行该命令。 >>> ret = subprocess.getoutput("./stdout_err_2.sh") >>> ret # 子进...
subprocess.getoutput()和subprocess.getstatusoutput()函数是来自Python 2.x的commands模块的两个遗留函数。它们隐式的调用系统shell,并且不保证其他函数所具有的安全性和异常处理的一致性。另外,它们从Python 3.3.4开始才支持Windows平台。 2. 上面各函数的定义及参数说明 函数参数列表: subprocess.run(args, *, std...
我想通过subprocess实时获取脚本的输出内容 下面是我的脚本 test_echo.py import timefor i in range(10): {代码...} 下面是读取的脚本: 脚本名字get_output.py import subprocess cmd = '/root/test_echo.py'p ...
如果执行的脚本里面也会有输出内容的时候,这个时候也想把输出的内容实时显示出来,去掉stdout缓存的话,可以在执行脚本的前面加上 PYTHONUNBUFFERED=1 python get_output.py, 也可以用p = subprocess.Popen(['python', "-u", 'get_output.py'],stdout=subprocess.PIPE, stderr=subprocess.STDOUT,bufsize=1), pyth...