3 個 Python 第三方模塊的使用簡介
??本文將會介紹3個Python第三方模塊的使用方法,它們分別是tqdm,?pyyaml和traceback模塊,各自的用途描述如下:
tqdm: 可以顯示循環(huán)的進度條;pyyaml:Python操作YAML文件的庫;tracebak:詳細追蹤錯誤信息的庫。
??下面將會給出這3個模塊的簡單介紹和使用。
tqdm
??tqdm是Python中可以顯示循環(huán)的進度條模塊,tqdm()可以直接包裹iterable的對象。如果我們需要顯示程序處理的進度條時,我們可以使用該模塊。
??下面將給出幾個簡單使用tqdm的例子。
??例子1:直接使用進度條,示例程序如下:
#?-*-?coding:?utf-8?-*-
import?time
from?tqdm?import?tqdm
for?i?in?tqdm(range(100)):
????time.sleep(0.01)
輸出結果如下:
100%|██████████|?100/100?[00:01<00:00,?91.52it/s]
??例子2:在處理進度條的同時,輸出額外的處理信息,示例程序如下:
#?-*-?coding:?utf-8?-*-
import?time
from?tqdm?import?tqdm
pbar?=?tqdm(["a",?"b",?"c",?"d"])
for?char?in?pbar:
????pbar.set_description("Processing?%s"?%?char)
????time.sleep(1)
輸出如下:
Processing?d:?100%|██████████|?4/4?[00:04<00:00,??1.00s/it]
??例子3:人工控制進度條的進度,示例代碼如下(為了演示效果,進度條沒有100%):
#?-*-?coding:?utf-8?-*-
import?time
from?tqdm?import?tqdm
with?tqdm(total=100)?as?pbar:
????for?i?in?range(5):
????????time.sleep(0.5)
????????pbar.update(10)
輸出如下:
50%|█████?????|?50/100?[00:02<00:02,?19.89it/s]
??更多的內(nèi)容請參考tqdm模塊的官網(wǎng):https://pypi.org/project/tqdm/ 。
pyyaml
?&emsop;YAML是數(shù)據(jù)序列化格式,便于人的閱讀和交互,與JSON類似,常用于配置文件。pyyaml是Python用于操作YAML文件的模塊,支持常見的讀寫操作。
??例子1:YAML文件寫入,示例代碼如下:
#?-*-?coding:?utf-8?-*-
import?yaml
json_data?=?{'name':?'Alice',
?????????????'age':?1956,
?????????????'job':?['Doctor',?'Driver',?'Worker']
?????????????}
#?輸出
y?=?yaml.dump(json_data,?default_flow_style=False).encode('utf-8').decode('unicode_escape')
print(y)
#?寫入到YAML文件
with?open('./alice.yaml',?'w')?as?f:
????y?=?yaml.dump(json_data,?f)
輸出結果如下(同時也會生成alice.yaml文件,內(nèi)容一致):
age:?1956
job:
-?Doctor
-?Driver
-?Worker
name:?Alice
??例子2:讀取YAML文件,示例代碼如下:
#?-*-?coding:?utf-8?-*-
import?yaml
with?open("./alice.yaml",?'r',?encoding='utf-8')?as?ymlfile:
????cfg?=?yaml.safe_load(ymlfile)
print(cfg)
輸出結果如下:
{'age':?1956,?'job':?['Doctor',?'Driver',?'Worker'],?'name':?'Alice'}
??YAML文件的輸出有其自身的規(guī)范,總結如下:
1、大小寫敏感
2、使用縮進表示層級關系
3、縮進時不允許使用Tab鍵,只允許使用空格。
4、縮進的空格數(shù)目不重要,只要相同層級的元素左側對齊即可
5、#?表示注釋,從這個字符一直到行尾,都會被解析器忽略,這個和python的注釋一樣
6、列表里的項用"-"來代表,字典里的鍵值對用":"分隔
??更多關于pyyaml的內(nèi)容,可以參考網(wǎng)址:https://pyyaml.org/wiki/PyYAMLDocumentation 。
traceback
??traceback模塊提供了一個標準接口,用于提取,格式化和打印Python程序的堆棧跟蹤。它在打印堆棧跟蹤時完全模仿了Python解釋器的行為。簡單來說,這個模塊可以詳細跟蹤錯誤的信息,并能格式化輸出,這在程序調(diào)試時會很有用。
??用try...except...機制,我們可以捕捉到錯誤,但不會有詳細的錯誤信息,比如下面的程序:
#?-*-?coding:?utf-8?-*-
try:
????result?=?'1'?+?2
????print(result)
except?Exception?as?err:
????print(err)
程序的輸出如下:
must?be?str,?not?int
該輸出只告訴我們錯誤的內(nèi)容,但是沒有告訴我們錯在哪里,詳細的信息是什么,這樣的處理方式在項目中普遍存在的話,那么項目的開發(fā)簡直就是個災難。
??那么,換成traceback會有什么變化呢?
#?-*-?coding:?utf-8?-*-
import?traceback
try:
????result?=?'1'?+?2
????print(result)
except?Exception?as?err:
????print(traceback.format_exc())
輸出結果如下:
Traceback?(most?recent?call?last):
??File?"/Users/Jclian91/PycharmProjects/demo/delete.py",?line?7,?in?<module>
????result?=?'1'?+?2
TypeError:?must?be?str,?not?int
該輸出告訴我們程序的第7行出錯,以及具體的錯誤信息,這對程序的開發(fā)很有幫助。
Python中文社區(qū)作為一個去中心化的全球技術社區(qū),以成為全球20萬Python中文開發(fā)者的精神部落為愿景,目前覆蓋各大主流媒體和協(xié)作平臺,與阿里、騰訊、百度、微軟、亞馬遜、開源中國、CSDN等業(yè)界知名公司和技術社區(qū)建立了廣泛的聯(lián)系,擁有來自十多個國家和地區(qū)數(shù)萬名登記會員,會員來自以工信部、清華大學、北京大學、北京郵電大學、中國人民銀行、中科院、中金、華為、BAT、谷歌、微軟等為代表的政府機關、科研單位、金融機構以及海內(nèi)外知名公司,全平臺近20萬開發(fā)者關注。
長按掃碼添加“Python小助手”?
一起討論Python的第三方模塊!
▼點擊成為社區(qū)會員? ?喜歡就點個在看吧

