用python调用系统命令并获得返回

目的:有时候需要一些系统的信息或者执行不是python的文件,这时候需要通过os模块调用它们。

环境:windows 7  Python 3.5.3

情景:

1)我通过python处理生成一个系统可以直接运行的文件,如bat批处理,需要执行它;

2)我对批处理比较熟悉,想要在python执行命令并获得它的返回信息。

这两种情况都需要导入os模块:

第一种情况:

os.open(file, flags[, mode]);

可以打开系统中的文件,参数如下:

  • file --  要打开的文件
  • flags --  该参数可以是以下选项,多个使用 "|" 隔开:
    • os.O_RDONLY: 以只读的方式打开
    • os.O_WRONLY: 以只写的方式打开
    • os.O_RDWR : 以读写的方式打开
    • os.O_NONBLOCK: 打开时不阻塞
    • os.O_APPEND: 以追加的方式打开
    • os.O_CREAT: 创建并打开一个新文件
    • os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
    • os.O_EXCL: 如果指定的文件存在,返回错误
    • os.O_SHLOCK: 自动获取共享锁
    • os.O_EXLOCK: 自动获取独立锁
    • os.O_DIRECT: 消除或减少缓存效果
    • os.O_FSYNC : 同步写入
    • os.O_NOFOLLOW: 不追踪软链接
  • mode --  类似 chmod() , 这个参数在linux中常用,默认0777

返回值

返回新打开文件的描述符。

这里举两个例子:

1)类似open()操作文本文件

with os.open(‘test.txt‘, os.O_RDWR|os.O_CREAT) as f:
    os.write(f, ‘This is a test.‘)

恩,就是这样,用起来感觉比open()麻烦(链接)。

2)执行已经存在的批处理文件

os.open(‘test.bat‘)

恩,很简单的一句。

第二种情况:

os.popen(command[, mode[, bufsize]])

我想获得当前的用户名:

在windows 中 echo %username% 可以输出当前的用户名

user = os.popen(‘ echo %username%‘).read()

恩,就是这样,组合使用感觉还不错。

时间: 2024-10-20 15:52:22

用python调用系统命令并获得返回的相关文章

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一个已存在的目录,其不会把

Python调用系统命令的6种方法

Python调用系统命令的6种方法在Python中调用系统命令一般使用os或者subprocess模块,下面介绍Python中最常用的6种调用系统命令的方法.1.os.system()该函数返回命令执行结果的返回值,system()函数在执行过程中进行了以下三步操作:1.fork一个子进程:2.在子进程中调用exec函数去执行命令:3.在父进程中调用wait(阻塞)去等待子进程结束.返回0表示命令执行成功,其他表示失败.用法:os.system("command")2.os.popen

JAVA调用系统命令或可执行程序--返回一个Runtime运行时对象,然后启动另外一个进程来执行命令

通过 java.lang.Runtime 类可以方便的调用操作系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都通过.基本原理是,首先通过 Runtime.getRuntime() 返回与当前 Java 应用程序相关的运行时对象,然后调用run.exec(cmd)  另启一个进程来执行命令(cmd为要执行的命令). 一.运行一个可执行程序 执行一个.exe的文件,或通过已安装的软件打开一个特定格式的文件,如word.chm或mp3等等. 1. 在window下

python执行系统命令后获取返回值

import os, subprocess # os.system('dir') #执行系统命令,没有获取返回值,windows下中文乱码 # result = os.popen('dir') #执行系统命令,返回值为result# res = result.read()# for line in res.splitlines():# print(line ) #用subprocess库获取返回值.# p = subprocess.Popen('dir', shell=True, stdout=

Python 调用系统命令

os.system os.spawn os.popen popen2 commands 这些东西统统将被subprocess取代,subprocess真的很好用,有没有! 1.subprocess.call() subprocess.call()参数是一个列表,如果想把shell命令以字符串的形式传进来,需要添加shell=True这个参数. >>> from subprocess import call >>> call("df -h",shell

Python调用系统命令的四种方法

一.os.system(commandString) import os statusCode=os.system("powershell sleep 3 ;echo 天下大势为我所控") print("over",statusCode) 这里使用了powershell来执行sleep命令,在cmd里面是没有sleep命令的. 会发现os.system(commandString)是阻塞的. 这个函数类似C语言里面的stdlib.h中的system命令 这种方法只负

python调用shell命令小结

在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen.默认情况下subprocess.call的方法结果是返回值,即1或0,而os.popen则是命令运行的结果,可以用readlines(读取所有行,返回数组)或者read(读读取所有行,返回str)来读取. subprocess类总主要的方法有: subprocess.call:开启子进程,开启子进程,运行命令,默认结果是返回值,不能try subproce

python 调用cmd,不显示cmd黑框

python 调用系统命令的方式有很多 1.1   os.system(command) 在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态.这实际上是使用C标准库函数system()实现的.这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果. 1.2   os.popen(command,mode) 打开一个与command进程之间的管道.这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默