如何在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