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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。