溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python調(diào)用第三方工具的方法及區(qū)別

發(fā)布時間:2021-08-30 18:50:54 來源:億速云 閱讀:203 作者:chen 欄目:編程語言

本篇內(nèi)容介紹了“python調(diào)用第三方工具的方法及區(qū)別”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

主要方法

1.  os.system

這個應(yīng)該是用法最簡單的方法了,os.system(“cmd”),直接傳入要執(zhí)行的命令字符串即可。注意返回值,它的返回值不是執(zhí)行命令的返回結(jié)果,如果命令執(zhí)行成功,則返回0;否則,返回其他值。另外,該方法是阻塞的,也就是說,只有調(diào)用的命令執(zhí)行完畢返回后,才會繼續(xù)運行后面的代碼行。

2.  Subprocess.Popen

subprocess模塊是推薦的用來替換一些老的模塊和函數(shù),如:os.system、os.popen等,定義了一個類Popen,使用Popen來創(chuàng)建進程,并與進程交互。

函數(shù)原型:

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)

參數(shù)解釋:

參數(shù)名

參數(shù)說明

args

字符串或列表

bufsize

0-無緩沖;1-行緩沖;其他正值-緩沖區(qū)大小;負值-默認系統(tǒng)緩沖(一般全緩沖)

executable

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

stdin

stdout

stderr

None-沒有重定向,繼承父進程

PIPE-創(chuàng)建管道

文件對象

文件描述符

stderr還可設(shè)置為STDOUT

preexec_fn

鉤子函數(shù),在fork和exec之間執(zhí)行(unix)

close_fds

Unix下執(zhí)行新進程前是否關(guān)閉0/1/2之外的文件;

Windows下是否繼承父進程的文件描述符

shell

如果設(shè)置為True,則unix下相當于args前面加”/bin/sh”  “-c”;

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

cmd

設(shè)置工作目錄

env

設(shè)置環(huán)境變量

universal_newlines

各種換行符統(tǒng)一處理成”\n”

startupinfo

Windows下傳遞給CreateProcess的結(jié)構(gòu)體

creationflags

Windows下傳遞CREATE_NEW_CONSOLE創(chuàng)建自己的控制臺窗口

從Popen提供的參數(shù)數(shù)量就能感知其功能強大,但使用Popen函數(shù)注意:如果運行cmd命令時產(chǎn)生內(nèi)容非常多,而標準輸出使用subprocess提供的PIPE,輸出內(nèi)容可能塞滿緩沖區(qū),造成阻塞。一般的解決方法是自定義文件流代替標準輸出的subprocess.PIPE。

3.  subprocess.call

函數(shù)原型:

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

函數(shù)解釋:

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

該函數(shù)執(zhí)行args接收的命令,等待命令執(zhí)行完成,然后返回returncode。

從函數(shù)解釋可知,該函數(shù)是阻塞型的,會一直等待子進程運行結(jié)束,并返回進程的returncode后,才會繼續(xù)運行程序后面的代碼行。如果不需要與子進程進行交互,且需要阻塞,可以使用該函數(shù)來完成任務(wù)。

“python調(diào)用第三方工具的方法及區(qū)別”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI