tqdm, pyyaml, traceback的使用

  本文將會介紹3個Python第三方模塊的使用方法,它們分別是tqdmpyyamltraceback模塊,各自的用途描述以下:python

  • tqdm: 能夠顯示循環的進度條;
  • pyyaml:Python操做YAML文件的庫;
  • tracebak:詳細追蹤錯誤信息的庫。

  下面將會給出這3個模塊的簡單介紹和使用。json

tqdm

  tqdm是Python中能夠顯示循環的進度條模塊,tqdm()能夠直接包裹iterable的對象。若是咱們須要顯示程序處理的進度條時,咱們能夠使用該模塊。
  下面將給出幾個簡單使用tqdm的例子。
  例子1:直接使用進度條,示例程序以下:調試

# -*- coding: utf-8 -*-

import time
from tqdm import tqdm

for i in tqdm(range(100)):
    time.sleep(0.01)

輸出結果以下:code

100%|██████████| 100/100 [00:01<00:00, 91.52it/s]

  例子2:在處理進度條的同時,輸出額外的處理信息,示例程序以下:orm

# -*- 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)

輸出以下:ip

50%|█████     | 50/100 [00:02<00:02, 19.89it/s]

  更多的內容請參考tqdm模塊的官網:https://pypi.org/project/tqdm/utf-8

pyyaml

 &emsop;YAML是數據序列化格式,便於人的閱讀和交互,與JSON相似,經常使用於配置文件。pyyaml是Python用於操做YAML文件的模塊,支持常見的讀寫操做。
  例子1:YAML文件寫入,示例代碼以下:unicode

# -*- 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文件,內容一致):

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文件的輸出有其自身的規範,總結以下:

一、大小寫敏感

二、使用縮進表示層級關係

三、縮進時不容許使用Tab鍵,只容許使用空格。

四、縮進的空格數目不重要,只要相同層級的元素左側對齊便可

五、# 表示註釋,從這個字符一直到行尾,都會被解析器忽略,這個和python的註釋同樣

六、列表裏的項用"-"來表明,字典裏的鍵值對用":"分隔

  更多關於pyyaml的內容,能夠參考網址:https://pyyaml.org/wiki/PyYAMLDocumentation

traceback

  traceback模塊提供了一個標準接口,用於提取,格式化和打印Python程序的堆棧跟蹤。它在打印堆棧跟蹤時徹底模仿了Python解釋器的行爲。簡單來講,這個模塊能夠詳細跟蹤錯誤的信息,並能格式化輸出,這在程序調試時會頗有用。
  用try...except...機制,咱們能夠捕捉到錯誤,但不會有詳細的錯誤信息,好比下面的程序:

# -*- coding: utf-8 -*-

try:

    result = '1' + 2
    print(result)

except Exception as err:

    print(err)

程序的輸出以下:

must be str, not int

該輸出只告訴咱們錯誤的內容,可是沒有告訴咱們錯在哪裏,詳細的信息是什麼,這樣的處理方式在項目中廣泛存在的話,那麼項目的開發簡直就是個災難。
  那麼,換成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行出錯,以及具體的錯誤信息,這對程序的開發頗有幫助。

  本次分享較爲簡單,但願能對讀者有用。  本次分享到此結束,感謝你們閱讀~

相關文章
相關標籤/搜索