首页 > 编程知识 正文

python调用外部系统命令,python类内部方法调用

时间:2023-12-27 22:26:11 阅读:323832 作者:DYWU

本文目录一览:

使用Python执行系统命令方法有哪些

1. os.system()

这个方法直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息。

2. os.popen()

这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。

3. commands模块

注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。

注意2:当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。

4. subprocess模块

该模块是一个功能强大的子进程管理模块,是替换os.system, os.spawn*等方法的一个模块。

Python中执行系统命令常见的几种方法

(1)os.system

# 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息

# 如果再命令行下执行,结果直接打印出来例如:import osos.system('ls')

chk_err_log.py CmdTool.log install_log.txt install_zabbix.sh manage_deploy.sh MegaSAS.log

(2)os.popen

#该方法不但执行命令还返回执行后的信息对象

#好处在于:将返回的结果赋于一变量,便于程序的处理。

例如:import ostmp = os.popen('ls *.sh').readlines()tmp['install_zabbix.shn', 'manage_deploy.shn', 'mysql_setup.shn', 'python_manage_deploy.shn', 'setup.shn']

(3)使用模块subprocess使用方法:import subprocess

subprocess.call (["cmd", "arg1", "arg2"],shell=True)

好处在于:运用对线程的控制和监控,将返回的结果赋于一变量,便于程序的处理。

如获取返回和输出:

import subprocess

p = subprocess.Popen('ls *.sh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

print p.stdout.readlines()

for line in p.stdout.readlines():

print line,

retval = p.wait()

(4) 使用模块commands模块

常用的主要有两个方法:getoutput和getstatusoutput

import commands

commands.getoutput('ls *.sh')

'install_zabbix.shnmanage_deploy.shnmysql_setup.shnpython_manage_deploy.shnsetup.sh'

commands.getstatusoutput('ls *.sh')

(0, 'install_zabbix.shnmanage_deploy.shnmysql_setup.shnpython_manage_deploy.shnsetup.sh')

注意: 当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess,如果使用os.popen则会出现错误。

Python怎么调用系统命令

每种语言都有自己的优势,互相结合起来各取所长程序执行起来效率更高或者说哪种实现方式较简单就用哪个,nodejs是利用子进程来调用系统命令或者文件,文档见nodejs.org/api/child_process.html,NodeJS子进程提供了与系统交互的重要接口,其主要API有: 标准输入、标准输出及标准错误输出的接口。 NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有: 标准输入、标准输出及标准错误输出的接口 child.stdin 获取标准输入 child.stdout 获取标准输出 child.stderr 获取标准错误输出 获取子进程的PID:child.pid 提供生成子进程的方法:child_process.spawn(cmd, args=[], [options]) 提供直接执行系统命令的方法:child_process.exec(cmd, [options], callback) 提供调用脚本文件的方法:child_process.execFile(file, [args], [options], [callback]) 提供杀死进程的方法:child.kill(signal='SIGTERM') 用实例来感受一下,很有意思的,呵呵~~ 1、利用子进程调用系统命令(获取系统内存使用情况) 新建nodejs文件,名为cmd_spawn.js,代码如下: 复制代码 代码如下: var spawn = require('child_process').spawn; free = spawn('free', ['-m']); // 捕获标准输出并将其打印到控制台 free.stdout.on('data', function (data) { console.log('standard output:n' + data); }); // 捕获标准错误输出并将其打印到控制台 free.stderr.on('data', function (data) { console.log('standard error output:n' + data); }); // 注册子进程关闭事件 free.on('exit', function (code, signal) { console.log('child process eixt ,exit:' + code); });

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。