Python 可信手拈来写系统脚本,那么在 Python 中调用系统命令应该会比较便捷。所以本文来看看 Python 有几种方式调用系统命令,以及与回味一下其他几种脚本语言的类似操作。简单说来,Python 执行系统命令的方式有四种方式,即
- os.system(cmd) (建议用 subprocess 模块)
- os.popen(cmd) (Python 3 中还能用,但不推荐使用了)
- commands 模块 (在 Python 3 中已移除了该模块,基本是不必去了解它)
- subprocess 模块(总是上面的矛头全指向它的,重点)
os.system(cmd)
Python资源共享群:484031800
启动一个子进程来执行系统命令,可以获得标准输入,不能获到命令输出, 但可以得到一个状态码
import os
status_code = os.system('cat a.py | grep username')
# username = input("Username:")
它是调用 C 函数 system(), 命令直接输出到终端,它返回的错误状态码与直接执行命令的值可能不一样
os.popen(cmd)
建立一个到命令的管道,可以捕获到命令(shell) 执行后的输出
import os
out = os.popen("cat a.json | grep id")
print(out.read())
不知如何得到状态码,不建议使用了,推荐用 subprocess 模块
subprocess 模块
从 os.system(cmd) 和 os.popen(cmd) 的官方文档都引导我们去使用 subprocess 模块
关于使用 subprocess 模块,这儿有个很好的学习视频, 隔着墙的朋友们请忍着些日子。
Python 可信手拈来写系统脚本,那么在 Python 中调用系统命令应该会比较便捷。所以本文来看看 Python 有几种方式调用系统命令,以及与回味一下其他几种脚本语言的类似操作。简单说来,Python 执行系统命令的方式有四种方式,即
- os.system(cmd) (建议用 subprocess 模块)
- os.popen(cmd) (Python 3 中还能用,但不推荐使用了)
- commands 模块 (在 Python 3 中已移除了该模块,基本是不必去了解它)
- subprocess 模块(总是上面的矛头全指向它的,重点)
os.system(cmd)
启动一个子进程来执行系统命令,可以获得标准输入,不能获到命令输出, 但可以得到一个状态码
import os status_code = os.system('cat a.py | grep username') # username = input("Username:")
它是调用 C 函数 system(), 命令直接输出到终端,它返回的错误状态码与直接执行命令的值可能不一样
os.popen(cmd)
建立一个到命令的管道,可以捕获到命令(shell) 执行后的输出
import os out = os.popen("cat a.json | grep id