21 python调用外部系统命令

 1 Python中执行系统命令常见的几种方法
 2 一,使用os模块
 3 import os
 4      1,os.system
 5
 6        import os
 7        os.system(‘cat /proc/cupinfo‘)      ## 类似于perl中的system命令,不能获取命令返回结果,只返回成功或失败
 8       注意:
 9         本质是调用标准C的system() 函数,仅仅在一个子终端运行系统命令,
10         ##不能获取命令执行后的返回信息。
11
12      2, os.popen    ##相当于perl中的readpipe 和 ``
13
14         output = os.popen(‘cat /proc/cpuinfo‘)
15         print output.read()
16         #print output.readlines()
17         注意:
18
19         ##执行命令后返回的信息的对象,
20         ##必须使用read()方法来将结果读取出来
21         ## 返回的结果是字符串 ,是str的类型
22         本质是通过一个管道文件将结果返回。
23         所以进行读写时,里面也是相当于会有文件指针的
24
25 二, 使用模块commands模块
26 import commands
27
28         (status, output) = commands.getstatusoutput(‘cat /proc/cpuinfo‘)
29
30         print status,output
31         print output    ####一般是只打印出元组中第2个元素即可,第2个才是真正命令的结果,第1个只是返回运行状态
32
33
34
35
36      注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,
37
38           具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。
39
40      注意2:当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。
41
42 三,使用模块subprocess
43
44       Subprocess是一个功能强大的子进程管理模块,是替换os.system ,os.spawn* 等方法的一个模块。
45
46       Class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None,
47
48                                        stderr=None, preexec_fn=None,  close_fds=True, shell=False,
49
50                                       cwd=None, env=None, universal_newlines=False, startupinfo=None,
51
52                                    creationflags=0, restore_signals=True, start_new_session=False, pass_fds=())
53
54      有丰富的参数可以进行配置,可供我们自定义的选项多,灵活性高。
55      之前我使用os.system的时候遇到文件描述符被子进程继承的问题,后来通过close_fds = False 这个参数来解决的。

原文地址:https://www.cnblogs.com/2mei/p/9254226.html

时间: 2024-10-09 18:37:18

21 python调用外部系统命令的相关文章

Python调用外部系统命令

利用Python调用外部系统命令的方法可以提高编码效率.调用外部系统命令完成后可以通过获取命令执行返回结果码.执行的输出结果进行进一步的处理.本文主要描述Python常见的调用外部系统命令的方法,包括os.system().os.popen().subprocess.Popen()等. 1.subprocess模块 优先介绍subprocess模块的是由于该模块可以替代旧模块的方法,如os.system().os.popen()等,推荐使用.subporcess模块可以调用外部系统命令来创建新子

python调用外部子进程,通过管道实现异步标准输入和输出的交互

我们通常会遇到这样的需求:通过C++或其他较底层的语言实现了一个复杂的功能模块,需要搭建一个基于Web的Demo,方法查询数据.由于Python语言的强大和简洁,其用来搭建Demo非常合适,Flask框架和jinja2模块功能为python提供了方便的web开发能力.同时,python能够很方便的同其他语言的代码交互.因此我们选择python作为开发Demo的工具.假设我们需要调用的模块(提供底层服务)通过标准输入循环读入数据,处理完毕后把结果写出到标出输出,这样的场景在Linux环境下很常见,

Python 调用外部命令

python 可以使用 os 模块来调用外部的 Linux Shell 命令,常用的方法如下: (1) os.system():结果输出在终端上,捕获不到(2) os.popen() : 结果返回一个对象,即标准输出(3) os.popen2():结果返回两个对象,分别是标准输入,标准输出(4) os.popen3():结果返回三个对象,分别是标准输入,标准输出,标准错误输出(5) os.popen4():结果返回两个对象,分别是标准输入,标准输出(标准输出中包括标准错误输出) In [2]:

Python调用linux系统命令--使用subprocess模块

在python 中调用系统命令,如果使用subprocess.Popen() 模块,按照命令参数的的形式,可以分两种: 把命令当作字符串传给subprocess.Popen() 把命令保存到一个元组,list 的序列,再传给subprocess.Popen() subprocess模块使用Popen类创建子进程执行命令,首先subprocess.Popen() 的原型: subprocess.Popen(args, bufsize=0, executable=None, stdin=None,

python调用外部命令

os.system:  输出在终端上,捕捉不到 os.popen:  只能捕捉到标准输出,捕捉不到标准错误输出 os.popen2: 返回2个对象,一个是标准输入,一个是标准输出 os.popen3: 返回3个对象,标准输入,标准输出,标准错误输出 os.popen4: 返回2个对象,pip_in 和pip_out_err os.system:  输出在终端上,捕捉不到 In [4]: os.system('ls')                                        

python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为

1.参考 autopy (实践见最后一章节) 用Python制作游戏外挂(上) AutoPy Introduction and Tutorial autopy.mouse.smooth_move(1, 1) 可以实现平滑移动 autopy - API Reference pip install PyUserInput SavinaRoja/PyUserInput [python3.5][PyUserInput]模拟鼠标和键盘模拟 Python-模拟鼠标键盘动作 autoit selenium借助

python调用系统命令popen、system

python调用Shell脚本,有两种方法:os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容.所以说一般我们认为popen更加强大 os.system(cmd): 该方法在调用完shell脚本后,返回一个16位的二进制 数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的返回值是0×100,换算为1

python调用系统命令 shell命令

使用python调用系统命令,基本有3种选择: 1. 使用os模块的system方法 import os os.system('ls') 2. 使用os模块的popen方法 import os os.popen('ls') 3. 使用commands模块的getstatusoutput方法 import commands commands.getstatusoutput('ls') 以上3种方式都可以调用系统命令,但其中第三种方式,过程中如果系统命令报错,例如mkdir一个已存在的目录,其不会把

Perl调用外部命令(其他脚本、系统命令)的方法和区别

1. `command`; 使用反引号调用外部命令能够捕获其标准输出,并按行返回且每行结束处附带一个回车.反引号中的变量在编译时会被内插为其值. 2. open LIST "ls -l|";    open MORE "|more";    @list=<LIST>;    print MORE @list;    close(LIST);    close(MORE);使用带管道的文件句柄来执行外部命令,使用方式与读写文件类似.可以从外部命令的输出读取