
查看所有Python相關(guān)學習筆記
調(diào)用外部程序
- python是粘合語言
- 現(xiàn)成的工具軟件,它們都可以完成一些功能(wget,ffmpeg)
ffmpeg 用于win上錄制視屏 - 有時需要擴展以下,添加一點功能(free)
free Linux查看內(nèi)存占用率 - 有時需要把工具軟件結(jié)合起來(free、gnuplot)
- 粘合各種外部程序和各種語言的庫,實現(xiàn)功能
- 現(xiàn)成的工具軟件,它們都可以完成一些功能(wget,ffmpeg)
兩種方法:
1、os.system
- os庫里面的system函數(shù)
- 等于打開操作移動的shell,敲入一串命令
- 比如 mspaint 命令(畫圖)
- 需要等待被調(diào)用的程序退出,才能返回
import os
os.system('mspaint') # win下調(diào)用畫圖程序
# os.system('mspaint d:\1.jpg') #用戶圖程序自動打開圖片
print('after call')
- ffmpeg
- 退出碼(通過退出碼判斷是否正常運行(調(diào)用是否成功))
import os
ret = os.system('ls') # mac下列出當前目錄所包含的文件
print('.................')
print(ret) # 打印退出碼,==0 表示調(diào)用成功
print('---------------------')
ret = os.system('ls dd') # mac下列出當前目錄所包含的文件
print('.................')
print(ret) # 打印退出碼,!=0 表示調(diào)用失敗
# 執(zhí)行結(jié)果
異常.py
連接Linux.py
.................
0
---------------------
.................
256
ls: dd: No such file or directory
Linux的命令:ls ;echo $?
通常退出碼為0,表示成功
2、subprocess
- 可以調(diào)用外部程序,且可以獲得外部程序的輸出內(nèi)容
- 可以輸入
- subprocess.check_output 需要等待被調(diào)用的程序退出,才能返回
import subprocess
# shell=True表示使用終端shell執(zhí)行程序,Windows下面就是cmd.exe
# 就是我們python程序調(diào)用cmd.exe再由cmd.ext執(zhí)行 參數(shù)命令
ret = subprocess.check_output('dir',shell=True,encoding='gbk')
# 如果有中文,需要decode,因為是中文os,所以cmd.exe輸出是gbk編碼
# dir 目錄 可以查看該目錄下包含哪些文件
print(ret)
# 如果不指定enconding,返回的就是字節(jié)串
# print(ret.decode('gbk'))
- subprocess庫里面的Popen類,可以:
被調(diào)用程序運行時候,就獲取其輸出的信息
運行時,輸入一些信息給被調(diào)用程序
非阻塞式調(diào)用
輸入輸出重定向
裝飾器
函數(shù)里再定義函數(shù)(只在第一層函數(shù)內(nèi)有效)
函數(shù)里再定義類(只在第一層函數(shù)內(nèi)有效)
裝飾器
- 定義類的靜態(tài)方法時,就使用了裝飾器。
@staticmethod
def jump()
print('3 meters high')
- 裝飾器的特點是用一個@開頭的字符串
- 在我們閱讀別人的代碼時,會經(jīng)常碰到裝飾器
- 裝飾器通常用來裝飾函數(shù)
- 裝飾器主要用來給函數(shù)增加一點功能/改變一些功能
- 一般裝飾器本身也是一個函數(shù)(callable)
- 我們可以想象成它包含了被裝飾的函數(shù)