python 执行系统命令模块比较
python 执行系统命令模块比较1、os.system模块仅仅在子终端运行命令,返回状态码,0为成功,其他为失败,但是不返回执行结果 如果再命令行下执行,结果直接打印出来 >>> 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该方法执行命令后也返回执行结果 例: >>>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模块subprocess.call(),返回returncode状态码 subprocess.check_all(),和上一样,如果执行失败,则爆出异常 subprocess.check_output() 和以上两种一样,returncode返回为0,则返回执行结果,否则爆出subprocess.CallProcessError异常 subprocess.Popen(),以上方法的底层封装。 subprocess.Popen(): class 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) 1、Popen.poll():用于检查子进程是否已经结束。设置并返回returncode属性。 import subprocess >>> out (b‘root?0:0:root:/root:/bin/bashn‘,None) Popen.communicate() communicate()函数返回一个tuple(标准输出和错误). Popen.communicate() 和进程沟通:发送数据到标准输入.从标准输出和错误读取数据直到遇到结束符.等待进程结束. 输入参数应该是一个字符串,以传递给子进程,如果没有数据的话应该是None. 基本上,当你用 communicate()函数的时候意味着你要执行命令了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |