Python调用系统指令的4种办法

因为我们无从选择不是吗?因为这世界是如此的残酷。

——三笠·阿克曼

当我们建立一个新的虚拟机,配置需要的环境,当我们训练模型,不想一次次写重复的代码,一个可选项就是自己写一个自动化的脚本帮助我们完成这类重复性事情。得益于Ubuntu系统自带Py2/Py3,我们写好的python脚本可以没有障碍的执行。以下介绍4种不同的系统命令调用方法:

  1. os.system(cmd)

在子终端运行系统命令,不能获取命令执行后的返回信息以及执行返回的状态

1
2
3
4
import os

os.system("date")
# 2020年 03月 21日 星期六 07:48:01 CST
  1. # os.popen(cmd)

不仅执行命令而且返回执行后的信息对象(常用于需要获取执行命令后的返回信息)

1
2
3
4
5
6
import os

nowtime = os.popen("date")
print nowtime.read()
# 2020年 03月 21日 星期六 07:48:01 CST

  1. commands模块
方法 说明
getoutput 获取执行命令后的返回信息
getstatus 获取执行命令的状态值(执行命令成功返回数值0,否则返回非0)
getstatusoutput 获取执行命令的状态值以及返回信息
1
2
3
4
5
6
import commonds

status, output = commands.getstatusoutput("date")
print status # 0
print output # 2020年 03月 21日 星期六 07:48:01 CST

  1. subprocess模块

运用对线程的控制和监控,将返回的结果赋于一变量,便于程序的处理。

1
2
3
4
5
6
7
8
import subprocess

nowtime = subprocess.Popen(
"date", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
print nowtime.stdout.read()
# 2020年 03月 21日 星期六 07:48:01 CST

Reference

  1. https://www.python.org/
  2. https://www.anaconda.com/
  3. http://python.usyiyi.cn/python_278/library/subprocess.html