问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python 中os.system和commands.getoutput的区别是什么?

发布网友 发布时间:2022-05-01 15:14

我来回答

1个回答

热心网友 时间:2022-04-18 15:09

1. 使用os.system("cmd")

2. 使用Popen模块产生新的process

现在大部分人都喜欢使用Popen。Popen方法不会打印出cmd在linux上执行的信息。的确,Popen非常强大,支持多种参数和模式。使用前需要from subprocess import Popen, 

3:  PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞的方法。如果运行cmd时产生的内容非常多,函数非常容易阻塞住。解决办法是不使用

4:  wait()方法,但是也不能获得执行的返回值了。

5: Popen原型是:

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)  

6:  参数bufsize:指定缓冲。我到现在还不清楚这个参数的具体含义,望各个大牛指点。

7:  参数executable用于指定可执行程序。一般情况下我们通过args参数来设置所要运行的程序。如果将参数shell设为 True,executable将指定程序使用的shell。在windows平台下,默认的shell由COMSPEC环境变量来指定。

8:  参数stdin, stdout, stderr分别表示程序的标准输入、输出、错误句柄。他们可以是PIPE,文件描述符或文件对象,也可以设置为None,表示从父进程继承。

9:  参数preexec_fn只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用

1. 使用os.system("cmd")这是最简单的一种方法,特点是执行的时候程序会打出cmd在linux上执行的信息。使用前需要import os。[python] os.system("ls")  

2. 使用Popen模块产生新的process现在大部分人都喜欢使用Popen。Popen方法不会打印出cmd在linux上执行的信息。的确,Popen非常强大,支持多种参数和模式。使用前需要from subprocess import Popen, 

3:  PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞的方法。如果运行cmd时产生的内容非常多,函数非常容易阻塞住。解决办法是不使用wait()方法,但是也不能获得执行的返回值了。

4:  Popen原型是:[python] subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)  

5:  参数bufsize:指定缓冲。我到现在还不清楚这个参数的具体含义,望各个大牛指点。参数executable用于指定可执行程序。一般情况下我们通过args参数来设置所要运行的程序。如果将参数shell设为 True,executable将指定程序使用的shell。在windows平台下,默认的shell由COMSPEC环境变量来指定。

6:  参数stdin, stdout, stderr分别表示程序的标准输入、输出、错误句柄。他们可以是PIPE,文件描述符或文件对象,也可以设置为None,表示从父进程继承。

7:  参数preexec_fn只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用。参数Close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管 道。我们不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。

8:  如果参数shell设为true,程序将通过shell来执行。参数cwd用于设置子进程的当前目录。

9:  参数env是字典类型,用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。

10:  参数Universal_newlines:不同操作系统下,文本的换行符是不一样的。如:windows下用’/r/n’表示换,而Linux下用 ‘/n’。如果将此参数设置为True,Python统一把这些换行符当作’/n’来处理。

11:  参数startupinfo与createionflags只在windows下用效,它们将被传递给底层的CreateProcess()函数,用 于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等。subprocess.PIPE

12: 在创建Popen对象时,subprocess.PIPE可以初始化stdin, stdout或stderr参数,表示与子进程通信的标准流。subprocess.STDOUT

13: 创建Popen对象时,用于初始化stderr参数,表示将错误通过标准输出流输出。

14:  Popen的方法:Popen.poll() 用于检查子进程是否已经结束。设置并返回returncode属性。Popen.wait() 

15:  等待子进程结束。设置并返回returnco

16:  使用commands.getstatusoutput方法这个方法也不会打印出cmd在linux上执行的信息。这个方法唯一的优点是,它不是一个阻塞的方法。即没有Popen函数阻塞的问题[python]tatus, output = commands.getstatusoutput("ls")  还有只获得output和status的方法:

17:  [python] commands.getoutput("ls")  commands.getstatus("ls")

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 怎样和处女座的领导相处 怎么和处女男相处? python中安装matplotlib出现问题,我是个菜鸟,求大神带我飞 遇到处女座工作节奏很快的领导该怎么办? 与处女座A型血的男领导怎么相处 跟处女座上司共事,一定要注意哪些问题? 在职场中,如何跟处女座的上司打交道? kk喷喷笔怎么用 python3.6有commands包吗 kk喷喷笔怎么做 kk喷喷笔的用法使用方法图片 笔盖打不开了怎么办 有张图片上被人打上了喷笔马赛克,但是我想知道这个马赛克掩盖下的数字是多少,怎么才能识别出来 如何在用喷笔过程中保证漆不会混在一起 有可以用嘴吹的喷笔吗? 如何使用喷笔才能让颜料不弄得喷笔上到处都是 下壶喷笔怎么洗 我的喷笔为何总喷出点,哪出了问题 喷喷笔怎么用 喷笔堵了 怎么洗 我不想拆 麻烦大哥大姐告诉个能解决的方法 如何与处女座领导相处 python2.7 安装完以后 提示找不到指令 女射手座遇上男*座 上司 应该如何自处?。知道会互不顺眼,所以有点畏惧。求相处技巧。 python怎么安装sendmail 在生活中,该如何与处女座的男人相处? python3 安装beautifulsoup时一直显示invalid command name 'setup.py' 怎么和处女座男相处? 比钝角大的叫什么? 怎样和处女座男生相处啊? 比钝角还大的角是? 和处女座男人怎么相处才好 如何与处女座男人最舒服的相处~~~你不纠结他不纠结! 三角尺上最大的角叫什么角比这个角大的叫什么角比这个角小的叫什么角 比钝角的角度大比周角的角度小是什么角? 钝角大还是直角大? 求助,与处女座男生相处注意事项 比直角小的角是多少,比什么大,比什么小的角是钝角 处女座怎样和领导相处 最大的角是钝角对吗 怎么和处女座男生相处