• tqdm, pyyaml, traceback的使用


      本文将会介绍3个Python第三方模块的使用方法,它们分别是tqdmpyyamltraceback模块,各自的用途描述如下:

    • tqdm: 可以显示循环的进度条;
    • pyyaml:Python操作YAML文件的库;
    • tracebak:详细追踪错误信息的库。

      下面将会给出这3个模块的简单介绍和使用。

    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)
    

    输出结果如下:

    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]
    

      更多的内容请参考tqdm模块的官网:https://pypi.org/project/tqdm/

    pyyaml

     &emsop;YAML是数据序列化格式,便于人的阅读和交互,与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文件,内容一致):

    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文件的输出有其自身的规范,总结如下:

    1、大小写敏感
    
    2、使用缩进表示层级关系
    
    3、缩进时不允许使用Tab键,只允许使用空格。
    
    4、缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
    
    5、# 表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样
    
    6、列表里的项用"-"来代表,字典里的键值对用":"分隔
    

      更多关于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行出错,以及具体的错误信息,这对程序的开发很有帮助。

      本次分享较为简单,希望能对读者有用。
      本次分享到此结束,感谢大家阅读~

  • 相关阅读:
    springmvc学习笔记---idea创建springmvc项目
    Spring Boot中使用Swagger2构建RESTful API文档
    Dubbo原理实现之使用Javassist字节码结束构建代理对象
    Dubbo启动时服务检查
    Dubbo原理实现之代理接口的定义
    dubbo实现原理之动态编译
    Dubbo实现原理之基于SPI思想实现Dubbo内核
    dubbo实现原理之SPI简介
    Spring中使用StandardServletMultipartResolver进行文件上传
    SpringCloud之Feign
  • 原文地址:https://www.cnblogs.com/jclian91/p/12417080.html
Copyright © 2020-2023  润新知