如何在Python中执行外部命令

时间:2019-05-19 01:26:02  来源:igfitidea点击:

Python子进程模块允许生成新的进程,从Python脚本执行外部命令。
我们可以使用。安装最新版本的Python。
此外,还有许多IDE可供Python使用。
比如在Ubuntu系统上安装PyCharm Python IDE。

一个简单的Python示例

让我们创建第一个程序来列出当前目录中可用的所有文件。
可以使用comm(,)分隔来添加任意数量的命令行参数。

#!/usr/bin/python3

import subprocess

subprocess.call(["ls", "-l"])

其中
import语句用于加载子进程模块形成Python标准librarycall是子进程模块的函数,用于执行外部命令

Python中不打印新行

Python命令以新的行输出" \n "结束,我们可以使用end= " "覆盖它,这意味着下一个命令输出将在同一行上。
参见下面的示例。

#!/usr/bin/python3

import subprocess

print("\nToday is ", end="")
subprocess.call(["date","+%D"])

结果:

Today is 01/11/18

带Shell扩展的Python示例

默认的 subprocess.call 不展开shell通配符或执行命令替换。
这可以通过传递shell参数的真值来覆盖。
请记住,使用shell=True可能会造成系统的安全问题,因为它会执行有害的命令。

#!/usr/bin/python3

import subprocess

# Executing command without shell expansion
subprocess.call(['echo', 'Welcome $USER'])

# Executing command with shell expansion
subprocess.call('echo Welcome $USER', shell=True)

结果:

Welcome $USER
Welcome root

我们可以在上面的输出中看到,第一个命令打印了一个变量名,因为它是在没有进行shell扩展的情况下执行的。
使用shell展开执行的第二个命令获得用户环境变量的值。
另外,我们可以看到整个命令现在是作为字符串而不是字符串列表传递的。

其他有用的Python示例

我们可以将一个长命令存储在一个变量中,然后执行它,从而使脚本的格式更加可读和美观。

我们还可以使用subprocess.getoutput将任何命令的输出存储到一个变量中。
它还将存储是否生成任何错误消息。

#!/usr/bin/python3

import subprocess

cmd = "grep -Re 'Fatal' /var/log/ > searches.txt"
subprocess.call(cmd, shell=True)

结果:

The output of 'pwd' command is:
/root/Python/Scripts