函数
需要用到subprocess模块,使用函数:
subprocess.run(arg)
arg是字符串类型,是需要执行的指令
但是该代码并不会得到执行指令的输出,返回的是一个包含执行结果的CompletedProcess类的实例。
import subprocess
ls=subprocess.run("ls")
ls
>>> CompletedProcess(args='ls', returncode=0)
获得字节输出
这时我们查看其参数:
subprocess.run(args, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, universal_newlines=False)
设置参数stdout=subprocess.PIPE
通过返回的CompletedProcess类实例的stdout属性获得输出内容(此时输出是字节序列),即:
import subprocess
ls=subprocess.run("ls",stdout=subprocess.PIPE)
ls.stdout
>>> b'data.json\ntest.ipynb\n'
获得字符输出
方法1:
设置universal_newlines=True
即:
import subprocess
ls=subprocess.run("ls",stdout=subprocess.PIPE,universal_newlines=True)
print(ls.stdout)
>>> data.json
test.ipynb
方法2:直接decode解码
import subprocess
ls=subprocess.run("ls",stdout=subprocess.PIPE)
print(ls.stdout.decode(encoding = 'utf-8'))
>>> data.json
test.ipynb