下面是详细讲解“日常整理python执行系统命令的常见方法(全)”的完整攻略。
日常整理python执行系统命令的常见方法(全)
执行命令方式
在Python中,可以通过os.system
和subprocess
模块执行系统命令。
os.system
os.system
函数能够将参数作为命令行直接传递给操作系统的shell来执行。例如,下面的代码将在Linux系统上执行ls
命令:
import os
os.system('ls')
这将直接在控制台或终端上执行ls
命令,结果会打印到终端上。
subprocess
与os.system
不同,subprocess
模块提供了更灵活的接口来执行系统命令。而且,subprocess
提供了更好的处理和控制命令的输出、错误和状态等的能力。
使用subprocess
模块执行命令有多种方式,其中最常用的方式是使用subprocess.run
函数。例如,下面的代码将在Linux系统上执行ls
命令:
import subprocess
result = subprocess.run(['ls'], stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))
上面的代码会直接在Python代码中执行ls
命令,并且输出结果会保存在result.stdout
中。可以使用.decode('utf-8')
将结果从字节串转换为文本形式,并打印结果。如果要获取命令的输出结果,可以使用stdout=subprocess.PIPE
参数。如果要获取命令的错误输出,可以使用stderr=subprocess.PIPE
参数。
命令行参数
在执行命令时,通常需要传递一些参数给命令,例如,对于ls
命令,可以传递-a
参数来显示所有文件,或传递-l
参数来详细列出文件信息。
在Python中,可以使用字符串拼接或使用列表形式构建命令行参数。例如,对于ls -l /usr
命令,可以使用以下代码执行:
import os
os.system('ls -l /usr')
或者使用以下代码执行:
import subprocess
result = subprocess.run(['ls', '-l', '/usr'], stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))
获取命令输出
使用os.system
执行命令时,将命令输出直接打印在控制台上,不方便处理命令输出。在subprocess
中,可以使用stdout
参数来控制命令输出的处理方式。stdout
可以传递为PIPE
、文件句柄或者文件名等形式。取决于命令的输出,选择合适的输出方式。
例如,下面的代码将执行系统命令ls
并将输出保存到output.txt
文件中:
import subprocess
with open('output.txt', 'w') as f:
subprocess.run(['ls'], stdout=f)
错误处理
在执行系统命令时,可能会发生各种错误。在处理这些错误时,需要使用try-except
语句来捕获异常。在subprocess
中,如果命令执行失败的话,subprocess.run
会抛出CalledProcessError
异常。可以使用以下代码来处理运行失败的情况:
import subprocess
try:
result = subprocess.run(['undefined-command'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError:
print('Command execution failed!')
示例说明
示例1:获取系统运行时间
获取系统运行时间可以使用uptime
命令。使用以下代码可以获取系统运行时间:
import subprocess
result = subprocess.run(['uptime'], stdout=subprocess.PIPE)
uptime = result.stdout.decode('utf-8').strip()
print(f'System uptime: {uptime}')
示例2:获取CPU负载
获取CPU负载可以使用top
命令。使用以下代码可以获取系统CPU负载:
import subprocess
result = subprocess.run(['top', '-bn1'], stdout=subprocess.PIPE)
output = result.stdout.decode('utf-8')
cpu_load = output.split('\n')[2].split(':')[-1].strip()
print(f'CPU load: {cpu_load}')
以上两个示例展示了如何使用subprocess
库来执行系统命令。在实际代码中,通常需要根据具体需求使用不同的命令来获取所需信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:日常整理python执行系统命令的常见方法(全) - Python技术站