python调用第三方工具的方法及区别
admin
2023-07-16 13:03:34
0

主要方法

1.  os.system

这个应该是用法最简单的方法了,os.system(“cmd”),直接传入要执行的命令字符串即可。注意返回值,它的返回值不是执行命令的返回结果,如果命令执行成功,则返回0;否则,返回其他值。另外,该方法是阻塞的,也就是说,只有调用的命令执行完毕返回后,才会继续运行后面的代码行。

2.  Subprocess.Popen

subprocess模块是推荐的用来替换一些老的模块和函数,如:os.system、os.popen等,定义了一个类Popen,使用Popen来创建进程,并与进程交互。

函数原型:

class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=(), *, encoding=None, errors=None)

参数解释:

参数名

参数说明

args

字符串或列表

bufsize

0-无缓冲;1-行缓冲;其他正值-缓冲区大小;负值-默认系统缓冲(一般全缓冲)

executable

一般不用,args字符串或列表第一项表示程序名

stdin

stdout

stderr

None-没有重定向,继承父进程

PIPE-创建管道

文件对象

文件描述符

stderr还可设置为STDOUT

preexec_fn

钩子函数,在fork和exec之间执行(unix)

close_fds

Unix下执行新进程前是否关闭0/1/2之外的文件;

Windows下是否继承父进程的文件描述符

shell

如果设置为True,则unix下相当于args前面加”/bin/sh”  “-c”;

Windows下相当于添加”cmd.exe  /c”

cmd

设置工作目录

env

设置环境变量

universal_newlines

各种换行符统一处理成”\n”

startupinfo

Windows下传递给CreateProcess的结构体

creationflags

Windows下传递CREATE_NEW_CONSOLE创建自己的控制台窗口

从Popen提供的参数数量就能感知其功能强大,但使用Popen函数注意:如果运行cmd命令时产生内容非常多,而标准输出使用subprocess提供的PIPE,输出内容可能塞满缓冲区,造成阻塞。一般的解决方法是自定义文件流代替标准输出的subprocess.PIPE。

3.  subprocess.call

函数原型:

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)

函数解释:

Run the command described by args. Wait for command to complete, then return the returncode attribute

该函数执行args接收的命令,等待命令执行完成,然后返回returncode。

从函数解释可知,该函数是阻塞型的,会一直等待子进程运行结束,并返回进程的returncode后,才会继续运行程序后面的代码行。如果不需要与子进程进行交互,且需要阻塞,可以使用该函数来完成任务。

相关内容

热门资讯

粉笔张小龙,犯了众怒 在讲台上荒诞“暴走”的张小龙,并不令人意外。6月3日,粉笔创始人张小龙作为主讲嘉宾,应邀出席一所大学...
民进党前秘书长欠台糖公司1.7... 【环球网报道】据台湾中时新闻网报道,民进党前秘书长吴乃仁在担任台糖公司董事长期间,涉及贱卖台糖土地案...
3岁小孩不知妈妈去世,因想念每... “妈妈去国外工作了,很爱你们,只是暂时回不了家。”面对三岁大宝日复一日的寻母思念,湖北武汉的李先生只...
内塔尼亚胡险遭无人机袭击,以媒... 尽管黎以停火协议已达成并开始实施,但零星交火仍在持续。以色列总理内塔尼亚胡刚离开北部边境地区,疑似真...
美媒:拜登家族不肯消失,民主党... 美国将于今年年底举行中期选举,民主党人有望夺回众议院。然而拜登家族的高调举动,使得民主党再次分心,一...
对日本新型军国主义的“新型抗战... 【文/观察者网专栏作者 江宇舟】日本这几个月的对华行为,已经是全方位的恶声、恶气、恶行、恶法:自卫队...
“这里没有口号,只有实干”——... 在黄河科技学院,有这样一个地方:没有惊天动地的口号,没有花里胡哨的“形象工程”,有的只是实验室里彻夜...
AI决定6G成败关键? 专家称... 中经记者 陈佳岚 广州报道 “6G与AI的增强融合,这部分OPPO是全力投入的。而与AI的融合,也是...
自贡:“智造”为核,无人车跑出... 盐都初夏清晨,和勤劳的人们一同早起的,还有一辆辆造型新颖的无人配送车、清扫作业车。市民杨先生对此颇有...
黄仁勋不装了:所有芯片市场我全... 来源:市场资讯 (来源:科技头版) 英伟达要当AI时代唯一的王。 出品 | 科技头版 作者 | 青...