Python 执行命令行

参考

`close`!

下面的展示代码不一定关闭了管道或文件 实际代码中记得 close

或者使用 with 语句

os

os.system

最直接的方式

import os
code = os.system("pwd") # 得到执行脚本的路径
# 返回 return code
1
2
3

os.popenopen in new window

使用管道 可以获取输出内容

import os
pipe = os.popen('echo Returned output')
output = pipe.read() # read from pipe
# pipe.close()
1
2
3
4

subprocess

subprocess 提供了执行新进程同时获取结果的强大功能

subprocess.runopen in new window

since Python>=3.5

subprocess.run(*popenargs, input:bytes=None, capture_output=False, timeout=None, check=False, **kwargs)

import subprocess
result = subprocess.run(['ls','-l']) # 阻塞 API
# result : CompletedProcess
# result.args
# result.returncode
# result.stdout/stderr 捕获的输出 即 caputer_output=True 时有用
result = subprocess.run(['ls','-l'],caputer_output=True)
result.stdout # bytes
1
2
3
4
5
6
7
8

subprocess.Popenopen in new window

此类可以创造和管理执行的进程

import subprocess
process = subprocess.Popen(['echo', 'More output'],
                     stdout=subprocess.PIPE, 
                     stderr=subprocess.PIPE) # 指定为 pipe 通过 communicate 读取
stdout, stderr = process.communicate() # 类型都是 bytes
1
2
3
4
5

指定文件作为输出

with open('test.txt', 'w') as f:
    process = subprocess.Popen(['ls', '-l'], stdout=f)
1
2