使用getoutput()函数执行系统命令并处理输出的常见技巧
发布时间:2024-01-09 05:43:27
getoutput()函数是Python中的一个函数,用于执行系统命令并返回命令的输出结果。该函数常用于调用命令行工具,获取工具的输出结果,并在Python程序中进行处理和分析。
下面是一些常见的技巧和使用示例:
1. 执行简单的命令:
from subprocess import getoutput
output = getoutput('ls')
print(output)
上面的代码将执行ls命令,获取当前目录下的文件列表,然后将结果打印输出。
2. 获取命令的返回值:
from subprocess import getoutput
output = getoutput('git log --oneline')
print(output)
上面的代码将执行git log --oneline命令,获取Git仓库的提交记录,并将结果输出。在这个例子中,output变量将包含命令的输出结果。
3. 处理多行输出:
from subprocess import getoutput
output = getoutput('ps aux | grep python')
lines = output.split('
')
print(len(lines))
上面的代码将执行ps aux | grep python命令,获取正在运行的所有Python进程。output变量将包含命令的输出结果,我们使用split()函数将输出按换行符拆分成多行,然后计算行数。
4. 使用通配符匹配文件:
from subprocess import getoutput
output = getoutput('ls *.txt')
files = output.split('
')
print(files)
上面的代码将执行ls *.txt命令,获取当前目录下所有以.txt扩展名结尾的文件。output变量将包含命令的输出结果,我们使用split()函数将输出按换行符拆分成多行,并将结果存储在files列表中。
5. 使用正则表达式匹配输出:
import re
from subprocess import getoutput
output = getoutput('ifconfig')
ip_address = re.findall(r'inet (\d+\.\d+\.\d+\.\d+)', output)
print(ip_address)
上面的代码将执行ifconfig命令,获取当前主机的网络配置信息。output变量将包含命令的输出结果,我们使用findall()函数和正则表达式提取IPv4地址。提取结果将存储在ip_address列表中。
6. 忽略错误和警告:
from subprocess import getoutput
output = getoutput('tar -xzf file.tar.gz')
print(output)
上面的代码将执行tar -xzf file.tar.gz命令,解压缩一个tar.gz文件。如果解压缩过程中发生错误或警告,将被getoutput()函数忽略,不会引发异常。output变量将包含命令的输出结果。
