Python执行Linux系统命令的4种方法

(1) os.system

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

复制代码代码如下:
system(command) -> exit_status 
Execute the command (a string) in a subshell.

如果再命令行下执行,结果直接打印出来

复制代码代码如下:
>>> os.system('ls')
04101419778.CHM   bash      document    media      py-django   video
11.wmv            books     downloads   Pictures  python
all-20061022      Desktop   Examples    project    tools

(2) os.popen

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

复制代码代码如下:
popen(command [, mode='r' [, bufsize]]) -> pipe 
Open a pipe to/from a command returning a file object.

例如:

复制代码代码如下:
>>>tmp = os.popen('ls *.py').readlines()
>>>tmp
Out[21]:
['dump_db_pickle.py ',
'dump_db_pickle_recs.py ',
'dump_db_shelve.py ',
'initdata.py ',
'__init__.py ',
'make_db_pickle.py ',
'make_db_pickle_recs.py ',
'make_db_shelve.py ',
'peopleinteract_query.py ',
'reader.py ',
'testargv.py ',
'teststreams.py ',
'update_db_pickle.py ',
'writer.py ']

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

(3)  使用模块 subprocess

复制代码代码如下:
>>> import subprocess
>>> subprocess.call(["cmd", "arg1", "arg2"],shell=True)

获取返回和输出:

复制代码代码如下:
import subprocess
p = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
    print line,
retval = p.wait()

(4)  使用模块 commands

复制代码代码如下:
>>> import commands
>>> dir(commands)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', 'getoutput', 'getstatus','getstatusoutput', 'mk2arg', 'mkarg']
>>> commands.getoutput("date")
'Wed Jun 10 19:39:57 CST 2009'
>>>
>>> commands.getstatusoutput("date")
(0, 'Wed Jun 10 19:40:41 CST 2009')

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

复制代码代码如下:
Traceback (most recent call last):
  File "./test1.py", line 56, inmain()
  File "./test1.py", line 45, in main
    fax.sendFax()
  File "./mailfax/Fax.py", line 13, in sendFax
    os.popen(cmd)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 46-52: ordinal not inrange(128)

Python执行Linux系统命令方法的更多相关文章

  1. Python执行Linux系统命令的4种方法

    http://www.jb51.net/article/56490.htm (1) os.system 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 复制代码代码如下: system( ...

  2. python执行linux命令的两种方法

    python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: 方法一:使用os模块 1 2 3 shell# python >> import os >> ...

  3. 提高python执行效率的方法

    python上手很容易,但是在使用过程中,怎么才能使效率变高呢? 下面说一下提高python执行效率的方法,这里只是说一点,python在引入模块过程中提高效率的方法. 例如: 1.我们要使用os模块 ...

  4. PHP执行linux系统命令

    本文是第一篇,讲述如何在PHP中执行系统命令从而实现一些特殊的目的,比如监控服务器负载,重启MySQL.更新SVN.重启Apache等.第二篇<PHP监控linux服务器负载>:http: ...

  5. 解决python执行linux查看文件命令后,因为^@特殊符号导致部分内容不显示的问题

    问题现象 文件a的内容如下: 查看第3行到第5行的内容:sed -n '3,5p' /tmp/test/a 可见在命令行执行,是没有问题的. 在python中使用paramiko模块执行linux命令 ...

  6. python执行linux和window的命令

    linux: python执行shell脚本常用的方法 import os val=os.system("shell语句")  >>> val=os.system ...

  7. 再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件

    相信大家应该都接触过Linux操作系统(Ubuntu.Centos等),那么在使用的Linux操作系统需要使用一些远程ssh工具,尤其是公网服务器. 常用的ssh工具主要有:Xshell.MobaXt ...

  8. python执行linux的shell命令

    python执行shell脚本常用的方法 import os val=os.system("shell语句")  >>> val=os.system(" ...

  9. 用python执行Linux命令

    例1:在python中包装ls命令 #!/usr/bin/env python #python wapper for the ls command import subprocess subproce ...

随机推荐

  1. 无线路由MAC地址过滤安全可靠性讨论

    无线路由MAC地址过滤安全可靠性讨论/如何实现,真的有效吗,如何防范       [内容导航] 什么是MAC地址过滤 突破MAC地址过滤步骤 捕获的无线客户端MAC地址 更改MAC地址来伪造身份 在W ...

  2. jQuery Ajax使用总结

    一.概述 jQuery对Ajax操作进行了封装,在jQuery中$.ajax()是属于最底层的方法,第2层是load().$.get()和$.post()方法,第三层是$.getScript()和$. ...

  3. XDU 1022 (数论筛法+前缀和)

    解法一:数论筛法+前缀和 //其实题目中f[n]的值可理解为存在多少个整数对使a*b<=n #include<cstdio> #define N 1007 #define maxn ...

  4. tensorflow中使用tf.variable_scope和tf.get_variable的ValueError

    ValueError: Variable conv1/weights1 already exists, disallowed. Did you mean to set reuse=True in Va ...

  5. apache服务器设置

    服务器目录 目录说明 bin: apache常用的一些命令 cgi-bin:存放一些脚本语言命令 conf:apache配置文件 error:错误记录 htodcs存放站点文件 logs:记录日志 m ...

  6. 怎么解决teamviewer检测商业用途无法使用的问题

    https://jingyan.baidu.com/article/d5c4b52be51162da560dc517.html

  7. netty7---自定义序列化接口

    package com.cn.core; import java.nio.ByteOrder; import java.nio.charset.Charset; import java.util.Ar ...

  8. 在VS2015中用C++编写可被其它语言调用的动态库DLL

    转自:http://blog.csdn.net/songyi160/article/details/50754705 VS2015用C++创建动态库DLL步骤如下: (1)启动VS2015>文件 ...

  9. Webpack -- 基础篇

    篇仅演示 webpack 的基础搭建,为入门和走通基本流程而写.仅 window 系统. 1. 安装一些东西 安装 nodeJS,下载链接.然后检查安装是否完成. 系统“开始”和“R”键同时按住,桌面 ...

  10. 【英语学习】How do I stop overthinking at night?

    2017-04-03 If you were to say to the grown-ups: "I saw a beautiful house made of rosy brick, wi ...