如何在Python中执行外部命令-演道网
一个简单的Python示例
让我们创建第一个程序以列出当前目录中的所有可用文件。 您可以添加任意数量的以逗号(,)分隔的命令行参数。
#!/usr/bin/python3
import subprocess
subprocess.call([“ls”, “-l”])
import语句用于从Python标准库加载子流程模块
call是子流程模块的功能,用于执行外部命令
没有换行的Python打印
Python命令以新行输出“ \n”终止,您可以使用 end=”” 覆盖新行输出,这意味着下一个命令输出将在同一行上。 请参见以下示例。
#!/usr/bin/python3
import subprocess
print(“\nToday is “, end=””)
subprocess.call([“date”,”+%D”])
具有Shell扩展功能的Python示例
默认的subprocess.call不使用shell扩展通配符或执行命令替换。 可以通过为shell参数传递True值来覆盖此设置。请记住,使用shell=True可能会因为执行有害的命令而造成系统的安全问题。
#!/usr/bin/python3
import subprocess
# 在不使用shell扩展的情况下执行命令
subprocess.call([‘echo’, ‘Welcome $USER’])
# 使用Shell扩展执行命令
subprocess.call(‘echo Welcome $USER’, shell=True)
您可以在上面的输出中看到,第一个命令打印了一个变量名,因为它是在没有shell扩展的情况下执行的。 使用shell扩展执行的第二条命令获取USER环境变量的值。 另外,您可以看到整个命令现在作为字符串而不是作为字符串列表传递。
其他有用的Python示例
通过将长命令存储在变量中然后执行它,可以使脚本的可读性和美观性更高。
#!/usr/bin/python3
import subprocess
cmd = “grep -Re ‘Fatal’ /var/log/ > linuxidc.txt”
subprocess.call(cmd, shell=True)
您还可以使用subprocess.getoutput将任何命令的输出存储到变量中。 如果生成任何错误消息,它也将存储。
#!/usr/bin/python3
import subprocess
print(“The output of ‘pwd’ command is:”, flush=True)
output = subprocess.getoutput(‘pwd’)
print(output)
更多Python相关信息见Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.as
转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn