Python执行shell命令方法详解:os.system(), os.popen()与commands.getstatusou...

0 下载量 52 浏览量 更新于2024-08-31 收藏 51KB PDF 举报
本文档主要介绍了如何在Python中有效地执行shell命令,提供了三种常用的方法供开发者参考。首先,我们来看`os.system()`函数。这个方法直接在终端中执行shell命令,通过调用C标准库的`system()`函数,它会启动一个新的子进程来运行指定的命令(如`os.system('cat/etc/passwdqc.conf')`),并将命令的执行结果和状态(0表示成功,1表示失败)返回。然而,其缺点在于新开终端、无法保存结果以及没有直接的交互性。 其次,`os.popen()`函数是一个更为灵活的选择,它返回一个文件对象,允许读取或写入命令的输出,这对于需要处理命令执行结果的情况非常有用。例如,`tmp=os.popen('ls-l*').readlines()`会打开一个管道,允许逐行读取`ls-l*`命令的输出。这种方式的优点是可以获取到命令的实时输出,并且根据需要可以选择只读取结果。 最后,`commands.getstatusoutput()`函数提供了一个更为便捷的方式来执行和获取命令的状态和输出。这个函数会执行指定的命令(如`status,output = commands.getstatusoutput("netstat-apn|grep{0}|awk'{{{1}}}'|xargsecho".format(port,'print$7'))`),并以元组的形式返回执行状态和结果。由于它是按照`command;2>&1`的方式执行,输出包括了控制台输出和可能的错误信息。通过正则表达式(如`rr=re.compile(r'(\d+)/java')`),可以进一步处理输出内容,如在`for i in range(len(op))`循环中,根据匹配结果调用`os.system("kill-9{0}".format(op[i]))`来执行特定操作。 Python提供了多种方式来执行shell命令,开发者可以根据具体需求选择合适的方法,如需要即时输出和交互、结果处理简单或者更注重命令执行的灵活性和控制性。掌握这些方法对于编写Python脚本与操作系统交互,处理系统任务和数据抓取等场景具有重要的实践价值。