系统命令操作

原创 2016年06月01日 10:11:44
系统命令
1、call
执行命令,返回状态码
ret = subprocess.call(['ls', '-l'], shell=False)
ret = subprocess.call('ls -l', shell=True)


2、check_call
执行命令,如果执行状态码是0,则返回0,否则抛异常
subprocess.check_call(["ls", "-l"])
subprocess.check_call("exit 1", shell=True)


3、check_output
执行命令,如果状态是0,则返回执行结果,否则抛异常
subprocess.check_output(["echo", "hello world !"])
subprocess.check_output(["exit 1", shell=True])


^^^^^^^^^
subprocess.Popen(....)
用于执行复杂的系统命令
参数:
@args: shell命令,可以是字符串或者序列类型(如:list, 元组)
@bufsize: 指定缓冲。0  无缓存, 1行缓冲, 其他缓冲区大小,负值系统缓冲
@stdin,stdout,stderr: 分别表示程序的标准输入、输出、错误句柄
@preexec_fn:只有Unix平台下有效,用于指定一个可执行对象(callable object),他将在子进程运行之前被调用
@close_sfs : 在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道


所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin,stdout,stderr)
@shell:同上
@cwd:用于设置子进程的当前目录
@env:用于指定子进程的环境变量。如果env = None, 子进程的环境变量将从父进程中继承。
@universal_newlines:不同系统的换行符不同,True -》同意使用\n
@startupinfo与createionflags只在windows下有效


将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
案例:
import subprocess
ret1 = subprocess.Popen(["mkdir", "t1"])

ret2 = subprocess.Popen("mkdir t2", shell=True)





终端输入的命令分为两种:
输入即可得到输出,如:ifconfig
输入进行某环境,依赖在输入,如:python
import subprocess
obj = subprocess.Popen("mkdir t3", shell=True, cwd='/home/dev')


-------------
import subprocess
obj = subprocess.Popen(["python"], stdin=dubprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE, universal_newlines=True)
obj.stdin.write("print(1)\n")
obj.stdin.write("print(2)")
obj.stdin.close()

cmd_out = obj.stdout.read()
obj.stdout.close()
cmd_error = obj.stderr.read()
obj.stderr.close()

print(cmd_out)
print(cmd_error)


------------------
import subprocess

obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
obj.stdin.write("print(1)\n")
obj.stdin.write("print(2)")

out_error_list = obj.communicate()
print(out_error_list)


--------------
import subprocess

obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
out_error_list = obj.communicate('print("hello")')
print(out_error_list)


版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux系统下常用命令操作

在Linux系统下,重启Tomcat使用命令操作的! 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.s...
  • jakeswang
  • jakeswang
  • 2016年01月25日 13:58
  • 1049

adb命令操作app

让App的图标不显示 在AndroidManifest.xml中把MainActivity的:                 Android:name="android.inte...
  • chyychfchx
  • chyychfchx
  • 2016年05月25日 10:30
  • 430

Linux下修改用户名

SuSe操作系统:   1.  修改/etc/HOSTNAME 文件  ,其内容为计算机名。 输入命令:vi /etc/HOSTNAME 使用键盘上...
  • qq_37928350
  • qq_37928350
  • 2017年12月26日 10:50
  • 104

SQLite3命令操作大全

1. 数据库、表的建立,记录的添加、查询、修改和删除 F:\>sqlite3 database.db sqlite> create table admin(username text,age in...
  • yeahwell
  • yeahwell
  • 2013年04月24日 09:15
  • 585

hive 基本命令操作

Hive 是facebook开源的一个基于hadoop框架的查询工具,也就是说,需要用hive的话,就要先安装hadoop。这次是小结一下最近用hive的心得,经验分享。hadoop和hive,pig...
  • isoleo
  • isoleo
  • 2013年12月03日 15:24
  • 806

常见的Nand Flash的指令操作

nand scrub: 彻底擦除整块Nand Flash中的数据,包括OOB。可以擦除软件坏块标志。 nand erase: Nand Flash檫除命令,可以擦除指定偏移地址的字节数据 nan...
  • xiehongjun_hee
  • xiehongjun_hee
  • 2016年01月14日 21:53
  • 154

操作mysql数据库的简单dos命令

首先cd到mysql的安装目录,然后启动mysql服务器。 连接数据库: mysql -h localhost -u root -p -P 3306 -h:数据库服务器主机的ip -u:用户...
  • actionzh
  • actionzh
  • 2017年01月22日 16:32
  • 1802

ubuntu 使用命令总结(持续更新)

1.对整个源码目录进行搜索,使用find命令: find . -exec grep "xxxxxx" {} -nH \; > ~/find-xxxxxx.txt 2.ubuntu 下批量删除.s...
  • chr8880
  • chr8880
  • 2012年08月20日 14:41
  • 538

[Linux][入门系列]CentOS 的基础命令详解-磁盘基础操作

[Linux][入门系列]CentOS 的基础命令详解 前言 继上次我们安装完CentOS之后,我们就要在CentOS进行一波操作了。OS,顾名思义,就是操作系统。既然是操作系统,那它就是可以...
  • tlytg
  • tlytg
  • 2017年02月21日 19:49
  • 145

Unity: CommandRunner.cs (csharp run adb shell on adroid)

from: https://searchcode.com/codesearch/view/5667336/ using System; using System.Collections.Ge...
  • zhangbp
  • zhangbp
  • 2016年03月10日 15:08
  • 468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:系统命令操作
举报原因:
原因补充:

(最多只允许输入30个字)