Python 执行命令行
参考
`close`!
下面的展示代码不一定关闭了管道或文件 实际代码中记得 close
或者使用 with
语句
os
os.system
最直接的方式
import os
code = os.system("pwd") # 得到执行脚本的路径
# 返回 return code
1
2
3
2
3
os.popen
使用管道 可以获取输出内容
import os
pipe = os.popen('echo Returned output')
output = pipe.read() # read from pipe
# pipe.close()
1
2
3
4
2
3
4
subprocess
subprocess
提供了执行新进程同时获取结果的强大功能
subprocess.run
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
2
3
4
5
6
7
8
subprocess.Popen
此类可以创造和管理执行的进程
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
2
3
4
5
指定文件作为输出
with open('test.txt', 'w') as f:
process = subprocess.Popen(['ls', '-l'], stdout=f)
1
2
2