Python运行cmd命令,cmd怎么运行Python
使用os.system(“cmd”)
调用shell脚本后,该方法返回一个16位二进制数,低位是杀死被调用脚本的信号号,高位是脚本的退出状态码。即脚本中“exit 1”的代码执行后,os.system函数返回值的高位为1。如果低位为0,则函数返回值为0100,转换为十进制得到256。
如果我们需要获得os.system的正确返回值,那么我们可以通过使用位移操作来恢复返回值:
n=操作系统(test.sh)
n8
3这是最简单的方法,特点是程序执行时,会打出在linux上执行cmd的信息。使用前需要导入操作系统。
Os.system(ls )只在一个子终端中运行系统命令,但不能得到命令执行后返回的信息。
os.Popen
这种调用方式是通过管道实现的,函数返回一个类似文件的对象,其内容就是脚本输出的内容(可以简单理解为echo输出的内容)。使用os.popen调用test.sh时,python调用Shell脚本。有两种方法:3360 OS。System (cmd)或os.popen(cmd)。前者的返回值是脚本的退出状态码,后者的返回值是脚本执行时的输出内容。实际使用要看需求。显然,像调用“ls”这样的shell命令应该使用popen的方法来获取内容。
popen(command[,mode=r[,bufsize]])-管道
Tmp=os.popen (ls *。py’)。Readlines()相关推荐:《Python入门教程》
subprocess.Popen
现在大部分人都喜欢用Popen。Popen方法不会打印出在linux上执行cmd的信息。的确,Popen非常强大,支持多种参数和模式。使用前需要from子流程导入Popen,PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞方法。如果运行cmd时产生大量内容,该功能非常容易被屏蔽。解决方法是不使用wait()方法,但是也不能获得执行的返回值。
Popen的原型是:
子流程。Popen(args,bufsize=0,executable=None,stdin=None,stdout=None,stderr=None,preexec_fn=None,
Close_fds=False,shell=false)参数bufsize:指定缓冲区。
可执行参数用于指定可执行程序。一般来说,我们设置程序通过args参数运行。如果参数shell设置为True,可执行文件将指定程序使用的shell。在windows平台下,缺省shell由COMSPEC环境变量指定。
参数stdin、stdout、stderr分别代表程序的标准输入、输出和错误句柄。它们可以是管道、文件描述符或文件对象,也可以设置为None,这意味着它们从父进程继承。
参数preexec_fn只在Unix平台上有效,用于指定一个可执行对象,在子进程运行前会调用该对象。
参数Close_sfs:在windows平台下,如果close_fds设置为True,新创建的子进程将不会继承父进程的输入、输出和错误管道。我们不能将close_fds设置为True来同时重定向子进程的标准输入、输出和错误(stdin、stdout、stderr)。
如果参数shell设置为true,程序将通过shell执行。
参数cwd用于设置子进程的当前目录。
参数env是一个字典类型,用于指定子进程的环境变量。如果env=None,子进程的环境变量将从父进程继承。
参数Universal_newlines:不同操作系统下文本的换行符是不一样的。例如,/r/n 表示windows下的更改
,而Linux下用‘/n’。如果将此参数设置为True,Python统一把这些换行符当作’/n’来处理。
参数startupinfo与createionflags只在windows下用效,它们将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等。
subprocess.PIPE
在创建Popen对象时,subprocess.PIPE可以初始化stdin, stdout或stderr参数,表示与子进程通信的标准流。
subprocess.STDOUT
创建Popen对象时,用于初始化stderr参数,表示将错误通过标准输出流输出。
Popen的方法:
Popen.poll()
用于检查子进程是否已经结束。设置并返回returncode属性。
Popen.wait()
等待子进程结束。设置并返回returncode属性。
Popen.communicate(input=None)
与子进程进行交互。向stdin发送数据,或从stdout和stderr中读取数据。可选参数input指定发送到子进程的参数。 Communicate()返回一个元组:(stdoutdata, stderrdata)。注意:如果希望通过进程的stdin向其发送数据,在创建Popen对象的时候,参数stdin必须被设置为PIPE。同样,如 果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。
Popen.send_signal(signal)
向子进程发送信号。
Popen.terminate()
停止(stop)子进程。在windows平台下,该方法将调用Windows API TerminateProcess()来结束子进程。
Popen.kill()
杀死子进程。
Popen.stdin
如果在创建Popen对象是,参数stdin被设置为PIPE,Popen.stdin将返回一个文件对象用于策子进程发送指令。否则返回None。
Popen.stdout
如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回 None。
Popen.stderr
如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回 None。
Popen.pid
获取子进程的进程ID。
Popen.returncode
获取进程的返回值。如果进程还没有结束,返回None。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。