您好,登錄后才能下訂單哦!
本篇內容介紹了“python調用第三方工具的方法及區別”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
主要方法
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后,才會繼續運行程序后面的代碼行。如果不需要與子進程進行交互,且需要阻塞,可以使用該函數來完成任務。
“python調用第三方工具的方法及區別”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。