zoukankan      html  css  js  c++  java
  • 一分钟学一个 Python 标准库之 Pathlib

    相对于 os.path 来说,Pathlib 极大地简化了路径相关的操作。举个例子来说:

    获取当前文件路径下的 default.yaml 文件

    import os
    
    os.path.join(os.path.dirname(__file__), "default.yaml")
    

    只需要:

    from pathlib import Path
    
    Path(__file__).parent / "default.yaml"
    

    不难看出,pathlib 有几个优点:

    1. 字符少了很多,出 bug 的地方就少了很多;
    2. 和操作系统一样,pathlib 直接使用路径分隔符 / 来操作,而不是 join 的两个参数;
    3. 非常符合直觉,从左到右阅读。而 os.path 使用函数参数,需要来回跳跃理解。相比之下,Pathlib 阅读起来很清晰。

    Python3 标准库中所有接受 str 作为路径参数的地方,现在都可以接受一个 path 对象了。如果你使用的第三方库只接受 str 作为参数,
    可以通过 path_str = str(path) 来转化一下。

    Pathlib 的其他常用方法:

    from pathlib import Path
    
    cwd = Path.cwd()  # 获取当前目录
    home = Path.home()  # 获取家目录,比如 /home/ubuntu
    path = Path("/home/yifei")  # 创建一个新的 path 对象
    
    path.is_dir()  # 是否是目录
    path.is_file()  # 是否是普通文件
    path.exists()  # 路径是否存在
    path.resolve()  # 解析成绝对路径,比如 Path(".").resolve() 相当于 Path.cwd()
    
    path.mkdir(parents=True, exists_ok=True) # 类似 mkdir -p
    
    # 遍历目录
    for child in path.iterdir():
        print(child)
    
    # 除此之外,还有几个很甜的方法,省去了 with open 语句
    path = Path("/home/ubuntu/readme.txt")
    text = path.read_text()
    path.write_text(text)
    
    path = Path("/home/ubuntu/image.png")
    image = path.read_bytes()
    path.write_bytes(image)
    
    >>> path
    PosixPath('/home/ubuntu/test.md')
    >>> path.name
    'test.md'
    >>> path.stem
    'test'
    >>> path.suffix
    '.md'
    >>> path.parent
    PosixPath('/home/ubuntu')
    >>> path.parent.parent
    PosixPath('/home')
    >>> path.anchor
    '/'
    

    在这个注意力涣散的年代,想要经常写一些长篇大论的帖子实在太难了,可能一个月才能憋出一篇。不如分享写简单但是有用的知识点,或许还能经常更新。

    以上就是全部内容啦。

    参考

    1. https://realpython.com/python-pathlib/
    2. https://docs.python.org/3/library/pathlib.html
  • 相关阅读:
    WebSocket就是这么简单
    用户登陆注册【JDBC版】
    Web开发模式【Mode I 和Mode II的介绍、应用案例】
    JDBC常见面试题
    JDBC【数据库连接池、DbUtils框架、分页】
    JDBC【事务、元数据、改造JDBC工具类】
    JDBC【PreparedStatment、批处理、处理二进制、自动主键、调用存储过程、函数】
    JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】
    AJAX面试题都在这里
    AJAX入门这一篇就够了
  • 原文地址:https://www.cnblogs.com/ospider/p/15724677.html
Copyright © 2011-2022 走看看