gpt4 book ai didi

在Python中执行系统命令的方法示例详解

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章在Python中执行系统命令的方法示例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言 。

Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库。在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法.

本文将详细介绍关于Python中如何执行系统命令的相关资料,下面话不多说了,来一起看看详细的介绍吧.

(1) os.system() 。

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

?
1
2
3
4
5
6
7
8
>>> import os
>>> output = os.system( 'cat /proc/cpuinfo' )
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...
>>> output # doesn't capture output
0

(2) os.popen() 。

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

?
1
2
3
4
5
6
7
8
9
>>> output = os.popen( 'cat /proc/cpuinfo' )
>>> output
< open file 'cat /proc/cpuinfo' , mode 'r' at 0x7ff52d831540 >
>>> print output.read()
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...
>>><span style = "font-size:14px;" >

(3) commands模块 。

?
1
2
3
4
5
6
7
8
9
>>> import commands
>>> (status, output) = commands.getstatusoutput( 'cat /proc/cpuinfo' )
>>> print output
processor : 0
vendor_id : AuthenticAMD
cpu family : 21
... ...
>>> print status
0

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

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

(4) subprocess模块 。

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

?
1
2
3
4
5
6
7
8
9
10
11
>>> import subprocess
>>> subprocess.Popen([ "ls" , "-l" ]) <strong> # python2.x</strong> doesn't capture output
>>> subprocess.run([ "ls" , "-l" ]) <strong> # python3.x</strong> doesn't capture output
<subprocess.Popen object at 0x7ff52d7ee490 >
>>> total 68
drwxrwxr - x 3 xl xl 4096 Feb 8 05 : 00 com
drwxr - xr - x 2 xl xl 4096 Jan 21 02 : 58 Desktop
drwxr - xr - x 2 xl xl 4096 Jan 21 02 : 58 Documents
drwxr - xr - x 2 xl xl 4096 Jan 21 07 : 44 Downloads
... ...
>>>

总结 。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我的支持.

补充:

最近在做那个测试框架的时候发现 Python 的另一个获得系统执行命令的返回值和输出的类.

最开始的时候用 Python 学会了 os.system() 这个方法是很多比如 C,Perl 相似的.

os.system('cat /proc/cpuinfo') 。

但是这样是无法获得到输出和返回值的,继续 Google,之后学会了 os.popen().

output = os.popen('cat /proc/cpuinfo') print output.read() 。

通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。但是怎么读取程序执行的返回值呢,当然咯继续请教伟大的 Google(联想到像我这样的人工作如果离开了 Google,不是成了废物。。。Baidu 忽视)。Google 给我指向了 commands — Utilities for running commands。 这样通过 commands.getstatusoutput() 一个方法就可以获得到返回值和输出,非常好用.

(status, output) = commands.getstatusoutput('cat /proc/cpuinfo') print status, output 。

Python Document 中给的一个例子,很清楚的给出了各方法的返回.

>>> import commands >>> commands.getstatusoutput('ls /bin/ls') (0, '/bin/ls') >>> commands.getstatusoutput('cat /bin/junk') (256, 'cat: /bin/junk: No such file or directory') >>> commands.getstatusoutput('/bin/junk') (256, 'sh: /bin/junk: not found') >>> commands.getoutput('ls /bin/ls') '/bin/ls' >>> commands.getstatus('/bin/ls') '-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls' 。

原文链接:http://blog.csdn.net/u010318270/article/details/56841900 。

最后此篇关于在Python中执行系统命令的方法示例详解的文章就讲到这里了,如果你想了解更多关于在Python中执行系统命令的方法示例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com