最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • pathlib的使用例子

    正文概述    2020-08-09   314

    pathlib的使用例子

    统计文件个数

    我们可以使用.iterdir方法获取当前文件下的所以文件.

    import pathlib
    from collections import Counter
    now_path = pathlib.Path.cwd()
    gen = (i.suffix for i in now_path.iterdir())
    print(Counter(gen))

    输出内容

    Counter({'.py': 16, '': 11, '.txt': 1, '.png': 1, '.csv': 1})

    通过配合使用collections模块的Counter方法,我们获取了当文件夹下文件类型情况。

    前面我们说过glob模块点这里了解【glob模块的使用】,同样的pathlib也有glob方法和rglob方法,不同的是glob模块里的glob方法结果是列表形式的,iglob是生成器类型,在这里pathlib的glob模块返回的是生成器类型,然后pathlib还有一个支持递归操作的rglob方法。

    下面的这个操作我通过使用glob方法,设定规则进行文件的匹配。

    import pathlib
    from  collections import Counter
    gen =(p.suffix for p in pathlib.Path.cwd().glob('*.py'))
    print(Counter(gen))

    展示目录树

    下一个示例定义了一个函数tree(),该函数的作用是打印一个表示文件层次结构的可视树,该树以一个给定目录为根。因为想列出其子目录,所以我们要使用.rglob()方法:

    import pathlib
    from  collections import Counter
    def tree(directory):
        print(f'+ {directory}')
        for path in sorted(directory.rglob('*')):
            depth = len(path.relative_to(directory).parts)
            spacer = '    ' * depth
            print(f'{spacer}+ {path.name}')
    
    now_path = pathlib.Path.cwd()
    
    if __name__ == '__main__':
        tree(now_path)

    其中relative_to的方法的作用是返回path相对于directory的路径。

    parts方法可以返回路径的各部分。例如

    import pathlib
    now_path = pathlib.Path.cwd()
    if __name__ == '__main__':
        print(now_path.parts)

    返回

    ('/', 'Users', 'chennan', 'pythonproject', 'demo')

    获取文件最后一次修改时间

    iterdir(),.glob()和.rglob()方法非常适合于生成器表达式和列表理解。

    使用stat()方法可以获取文件的一些基本信息,使用.stat().st_mtime可以获取文件最后一次修改的信息。

    import pathlib
    now_path = pathlib.Path.cwd()
    from datetime import datetime
    time, file_path = max((f.stat().st_mtime, f) for f in now_path.iterdir())
    print(datetime.fromtimestamp(time), file_path)

    甚至可以使用类似的表达式获取上次修改的文件内容

    import pathlib
    from datetime import datetime
    now_path =pathlib.Path.cwd()
    result = max((f.stat().st_mtime, f) for f in now_path.iterdir())[1]
    print(result.read_text())

    .stat().st_mtime会返回文件的时间戳,可以使用datetime或者time模块对时间格式进行进一步转换。

    其他内容

    关于pathlib.Path格式路径转换为字符串类型。

    因为通过pathlib模块操作生成的路径,不能直接应用字符串的一些操作,所以需要转换成字符串,虽然可以使用str()函数进行转换,但是安全性不高,建议使用os.fspath()方法,因为如果路径格式非法的,可以抛出一个异常。str()就不能做到这一点。

    拼接符号"/"背后的秘密

    /运算符由__truediv__()方法定义。 实际上,如果你看一下pathlib的源代码,你会看到类似的东西。

    class PurePath(object):
    
        def __truediv__(self, key):
            return self._make_child((key,))

    下载网 » pathlib的使用例子

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元