Python雖然有許多優(yōu)秀的第三方庫补胚,但在實(shí)際使用的時(shí)候免不了使用一些cmd調(diào)用的程序码耐,畢竟這類程序比較底層,更快溶其、也更穩(wěn)定骚腥。比如GDAL、FFmpeg瓶逃、 ImageMagick等束铭。
利用Python調(diào)用cmd的方法也有不少,例如os.system和subprocess.call()厢绝,本次主要介紹后者契沫。同時(shí)也會說明一些避雷的注意事項(xiàng)。
subprocess 模塊允許我們啟動(dòng)一個(gè)新進(jìn)程昔汉,并連接到它們的輸入/輸出/錯(cuò)誤管道懈万,從而獲取返回值。其中的subprocess.call()則可以調(diào)用windows系統(tǒng)cmd命令行執(zhí)行額外的命令挤庇。
在使用subprocess.call()之前钞速,需要保證調(diào)用的軟件已經(jīng)添加在系統(tǒng)的環(huán)境變量路徑中。如GDAL:
我以GDAL中的gdalwarp函數(shù)為例
當(dāng)程序能在cmd中正確運(yùn)行時(shí)嫡秕,我們才可能使用subprocess.call()調(diào)用它渴语。
其次,你需要在python中安裝subprocess這個(gè)庫(好像有點(diǎn)廢話)
完成這些廢話步驟之后昆咽,就可以愉快的運(yùn)行起來了驾凶。比如:
GDAL的影像拼接:
裁剪:(圖略)
GIF制作:(圖略)
圖像拼接:
視頻流的聲音導(dǎo)入:(圖略)
以下:
1牙甫、subprocess.call()的輸出反饋有3個(gè),分別是0调违,1窟哺,2。其中0代表正確執(zhí)行技肩,1和2都是錯(cuò)誤執(zhí)行且轨,2通常是沒有讀取到文件,1的反饋目前未知虚婿。
2旋奢、windows的cmd是有輸入字符長度限制的,據(jù)查然痊,win7以上的系統(tǒng)大概是8k個(gè)字符長度(數(shù)字至朗、英文),所以剧浸,一旦輸入的字符長度過長锹引,就需要分批次運(yùn)行(暫時(shí)沒有其他解法)∷粝悖或者不使用cmd方法嫌变。其他操作系統(tǒng)未知。
到此為止
幾個(gè)好看的Seaborn圖樣~(雖然官方配色一般般袋马,但我還是忍不住夸它)
Python制作沙跖欤基圖(我承認(rèn)我低估了這個(gè)教程)
中國范圍2019年道路網(wǎng)數(shù)據(jù)分享
微信號:一個(gè)有趣的靈魂W關(guān)注我們秸应,了解更多