这里主要总结下,在 Python 代码脚本里,涉及到调用 Shell 脚本、终端命令行、其它 Python 脚本的场景.
1. 方法1 - os.system()
os.system() - 只返回状态码,执行结果会输出到stdout,即输出到终端. 仅在 Linux 中有效.
用法:import os
# 不传递参数
os.system(cmd) # cmd 即为Linux 终端命令行指令
# 返回命令执行的状态值
# 输出数字为 0,表示正确执行;
# 输出数字非 0,表示错误执行
# 传递一个参数
os.system("shell command argus %s" % argus1)
# 传递两个及以上参数
os.system("shell command argus %s %s" % (argus1, argus2)
如:import os
# 不传递参数
os.system("ls") # 显示文件夹文件,不包含隐藏文件
os.system("ls -a") # 显示文件夹所有文件,包含隐藏文件
os.system("pwd") # 获取当前目录
os.system("top") # 显示进程情况,退出需要输入 'q'.
# 传递一个参数
os.system("python test.py -i %s" %inputparam)
# 传递两个及以上参数
os.system("python test.py -i %s -b %s" % (inputparam1, inputparam2))
注:os.system(cmd) 不能执行交互式命令,如 ssh root@ip 需要输入密码的终端命令.
Python 字符格式化:%s 字符串 (采用str()的显示)
%r 字符串 (采用repr()的显示)
%c 单个字符
%b 二进制整数
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数(基底写为e)
%E 指数(基底写为E)
%f 浮点数
%F 浮点数,与上相同
%g 指数(e)或浮点数 (根据显示长度)
%G 指数(E)或浮点数 (根据显示长度)
%% 字符"%"
2. 方法二 - os.popen()
os.popen() - 用于从一个命令打开一个管道,返回结果是一个连接管道的文件对象,该文件对象的操作方法同 open(),可以从该文件对象中读取返回结果. 如果执行成功,不会返回状态码,如果执行失败,则会将错误信息输出到stdout,并返回一个空字符串. 在Unix,Windows中有效.
用法:import os
os.popen(cmd, mode, bufsize)
# cmd - 使用的命令。
# mode - 模式权限可以是 'r'(默认) 或 'w'.
# bufsize - 指明文件需要的缓冲大小:
# 0-无缓冲;1-行缓冲;<