Python如何使用OS模块调用cmd
在os模块中提供了两种调用cmd的方法,os.popen()和os.system()
os.system(cmd)是在执行command命令时需要打开一个终端,并且无法保存command命令的执行结果。
os.popen(cmd,mode)打开一个与command进程之间的管道。返回值是一个文件对象,可以读或者写(由mode决定,默认是'r')。如果mode为'r',可以使用此函数的返回值调用read()来获取command命令的执行结果。
os.system()
定义:
defsystem(*args,**kwargs):#realsignatureunknown """Executethecommandinasubshell.""" pass
简单的来说就是在shell中执行command命令
示例:
(venv)C:\Users\TynamYang>python Python3.7.0(v3.7.0:1bf9cc5093,Jun272018,04:06:47)[MSCv.191432bit(Intel)]onwin32 Type"help","copyright","credits"or"license"formoreinformation. >>> >>>importos >>>cmd='echo"Iamtynam"' >>>os.system(cmd) "Iamtynam" >>>
os.popen()
定义:
#Supplyos.popen() defpopen(cmd,mode="r",buffering=-1): ifnotisinstance(cmd,str): raiseTypeError("invalidcmdtype(%s,expectedstring)"%type(cmd)) ifmodenotin("r","w"): raiseValueError("invalidmode%r"%mode) ifbuffering==0orbufferingisNone: raiseValueError("popen()doesnotsupportunbufferedstreams") importsubprocess,io ifmode=="r": proc=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, bufsize=buffering) return_wrap_close(io.TextIOWrapper(proc.stdout),proc) else: proc=subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, bufsize=buffering) return_wrap_close(io.TextIOWrapper(proc.stdin),proc)
也是在shell中执行command命令,但是返回的结果却是一个文件对象,可以对其读写
其中的三个参数含义:
command--执行的shell命令
mode--模式权限,读(‘r')或者写(‘w'),默认为读(‘r')
bufsize--如果将缓冲值设置为0则不会进行缓冲。如果缓冲值为1则在访问文件时将执行行缓冲。如果将缓冲值设置为大于1的整数则以设置的缓冲大小执行缓冲操作。如果为负则缓冲区大小为系统默认值(默认行为)。
示例:
>>>importos >>>cmd='echo"Iamtynam"' >>>f=os.popen(cmd,'r') >>>f.read() '"Iamtynam"\n' >>>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。