Python运行cmd命令,cmd怎么运行Python

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: