必掌握的技巧之一

简介: 必掌握的技巧之一

获取文件夹中的文件列表


问题核心:★★    口感:苦瓜


问题


想获取文件系统中某个目录下的所有文件列表。



解决方案


使用 os.listdir() 函数来获取某个目录中的文件列表:


    import os
    names = os.listdir('somedir')

    结果会返回目录中所有文件列表,包括所有文件,子目录,符号链接等等。如果你需要通过某种方式过滤数据,可以考虑结合 os.path 库中的一些函数来使用列表推导

    比如:

      import os.path
      names = [name for name in os.listdir('somedir')
      if os.path.isfile(os.path.join('somedir', name))]
      dirnames = [name for name in os.listdir('somedir')
      if os.path.isdir(os.path.join('somedir', name))]

      字符串的 startswith() 和 endswith() 方法对于过滤一个目录的内容也是很有用 的。比如:



      pyfiles = [name for name in os.listdir('somedir')
      if name.endswith('.py')]


      对于文件名的匹配,你可能会考虑使用 glob 或 fnmatch 模块。

      比如:


      import glob
      pyfiles = glob.glob('somedir/*.py')
      from fnmatch import fnmatch
      pyfiles = [name for name in os.listdir('somedir')
      if fnmatch(name, '*.py')]


      结论


      获取目录中的列表是很容易的,但是其返回结果只是目录中实体名列表而已。如果你还想获取其他的元信息,比如文件大小,修改时间等等,你或许还需要使用到 os.path 模块中的函数或着 os.stat() 函数来收集数据。比如:


      import os
      import os.path
      import glob
      pyfiles = glob.glob('*.py')
      name_sz_date = [(name, os.path.getsize(name), os.path.getmtime(name))
      for name in pyfiles]
        for name, size, mtime in name_sz_date:
          print(name, size, mtime)
      file_metadata = [(name, os.stat(name)) for name in pyfiles]
      for name, meta in file_metadata:
        print(name, meta.st_size, meta.st_mtime)

      最后还有一点要注意的就是,有时候在处理文件名编码问题时候可能会出现一些 问题。通常来讲,函数 os.listdir() 返回的实体列表会根据系统默认的文件名编码来 解码。但是有时候也会碰到一些不能正常解码的文件名。


      -END-

      ﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌


      往期好文合集


      高技巧,Python 可以读写压缩文件吗<<戳这里

      Python 读取 JSON 数据的骚操作<<戳这里多样式的字典,重口感<<戳这里


      最 后   

      若觉得文章不错,转发分享,也是我们继续更新的动力。Ps 将不在提供疫情查询服务在公众号内回复「资料」,即可获取 Python资料,期待你的关注~

      相关文章
      |
      9月前
      |
      存储 Linux 调度
      高效定时任务处理:深入学习Python中APScheduler库的奥秘
      高效定时任务处理:深入学习Python中APScheduler库的奥秘
      16773 7
      高效定时任务处理:深入学习Python中APScheduler库的奥秘
      |
      10月前
      |
      数据可视化 API 数据库
      python数据可视化开发(1):Matplotlib库基础知识
      python数据可视化开发(1):Matplotlib库基础知识
      128 0
      |
      9月前
      |
      存储 Python
      Python 还能播放音频,而且花样多多?
      Python 还能播放音频,而且花样多多?
      |
      9月前
      |
      JSON JavaScript 前端开发
      Python 读取 JSON 数据的骚操作
      Python 读取 JSON 数据的骚操作
      |
      9月前
      |
      Dubbo Java 应用服务中间件
      Dubbo 与 gRPC、Spring Cloud、Istio 的关系
      Dubbo 与 gRPC、Spring Cloud、Istio 的关系
      100 1
      |
      9月前
      |
      数据采集 XML 数据格式
      15行Python代码 实现图像定位
      15行Python代码 实现图像定位
      |
      9月前
      |
      网络协议 Unix 测试技术
      Python 库大全(上)!熟悉的都是大佬!(附代码讲解)
      Python 库大全(上)!熟悉的都是大佬!(附代码讲解)
      |
      9月前
      |
      算法 API Python
      random — 伪随机数生成器(史上总结最全)
      random — 伪随机数生成器(史上总结最全)
      |
      9月前
      |
      SQL 关系型数据库 数据库
      使用Python防止SQL注入攻击(上)
      使用Python防止SQL注入攻击(上)
      |
      9月前
      |
      数据采集 JavaScript 数据安全/隐私保护
      关于拼多多的 “anti_content” 参数这道题
      关于拼多多的 “anti_content” 参数这道题