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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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()

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


本文出自 “RickyHuL” 博客,请务必保留此出处http://rickyh.blog.51cto.com/10934856/1947783

以上是关于用python调用系统命令并获得返回的主要内容,如果未能解决你的问题,请参考以下文章

从 Python 调用外部命令失败并返回代码 0xC0000005 但在控制台中工作

Java调用Python脚本并获取返回值

python 调用系统命令 获取结束状态

Java或C#调用命令行批处理命令如何获得返回值

windows python 能调用shell命令吗

python中,执行命令的方法都有哪些?