分享

python调用终端命令的几种方式!

 Python集中营 2022-12-07 发布于甘肃

经常需要在python代码块中完成对系统终端命令的调用从而实现自动化的效果。

这里我们将使用最常见的'date'终端命令来打印出当前的系统时间操作,同时在python代码块中完成调用。

python代码块中调用终端命令一般有三种常见的方式,接下来分别通过这三种方式完成对终端的调用。

1、os模块调用

import os

os模块调用终端命令经常是过程popen()函数以及system()函数来完成调用。

os.popen()

result_ = os.popen('view /logs/test.log')

print(result_.read())

通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。

os.system()

使用os.system返回值是命令执行完成之后的退出时的状态码,一般成功时的退出状态为0。

result_ = os.system('view /logs/test.log')

print(result_)

使用os.system()函数如果执行成功,那么会返回0,表示命令执行成功。否则,则是执行错误。

2、commands模块

commands主要包含了三个函数来完成对终端的操作,分别是getoutput()、getstatus()、getstatusoutput(),通过不同的函数处理来返回不同的值信息。

import commands as cmd

status = cmd.getstatus('view /logs/test.log')
print(status)

output = cmd.getoutput('view /logs/test.log')
print(output)

(status, output) = cmd.getstatusoutput('view /logs/test.log')
print(status, output)

3、subprocess模块

Subprocess是一个功能强大的子进程管理模块,是替换os.system,os.spawn* 等方法的一个模块。当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。

# Importing the subprocess module and renaming it to pro.
import subprocess as pro

result_ = pro.Popen('view /logs/test.log', shell=True, stdout=pro.PIPE, stderr=pro.STDOUT)

print(result_.stdout.read())

for line in result_.stdout.readlines():
    print(line)

result_.stdout.close()

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多