必掌握的技巧之一

简介: 必掌握的技巧之一

获取文件夹中的文件列表


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


问题


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



解决方案


使用 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资料,期待你的关注~

      相关文章
      |
      13天前
      |
      供应链 监控 安全
      对话|企业如何构建更完善的容器供应链安全防护体系
      阿里云与企业共筑容器供应链安全
      171329 12
      |
      16天前
      |
      供应链 监控 安全
      对话|企业如何构建更完善的容器供应链安全防护体系
      随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
      150295 32
      |
      24天前
      |
      弹性计算 人工智能 安全
      对话 | ECS如何构筑企业上云的第一道安全防线
      随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
      201960 14
      对话 | ECS如何构筑企业上云的第一道安全防线
      |
      2天前
      |
      机器学习/深度学习 自然语言处理 PyTorch
      深入剖析Transformer架构中的多头注意力机制
      多头注意力机制(Multi-Head Attention)是Transformer模型中的核心组件,通过并行运行多个独立的注意力机制,捕捉输入序列中不同子空间的语义关联。每个“头”独立处理Query、Key和Value矩阵,经过缩放点积注意力运算后,所有头的输出被拼接并通过线性层融合,最终生成更全面的表示。多头注意力不仅增强了模型对复杂依赖关系的理解,还在自然语言处理任务如机器翻译和阅读理解中表现出色。通过多头自注意力机制,模型在同一序列内部进行多角度的注意力计算,进一步提升了表达能力和泛化性能。
      |
      6天前
      |
      存储 人工智能 安全
      对话|无影如何助力企业构建办公安全防护体系
      阿里云无影助力企业构建办公安全防护体系
      1251 8
      |
      7天前
      |
      人工智能 自然语言处理 程序员
      通义灵码2.0全新升级,AI程序员全面开放使用
      通义灵码2.0来了,成为全球首个同时上线JetBrains和VSCode的AI 程序员产品!立即下载更新最新插件使用。
      1275 23
      |
      8天前
      |
      机器学习/深度学习 自然语言处理 搜索推荐
      自注意力机制全解析:从原理到计算细节,一文尽览!
      自注意力机制(Self-Attention)最早可追溯至20世纪70年代的神经网络研究,但直到2017年Google Brain团队提出Transformer架构后才广泛应用于深度学习。它通过计算序列内部元素间的相关性,捕捉复杂依赖关系,并支持并行化训练,显著提升了处理长文本和序列数据的能力。相比传统的RNN、LSTM和GRU,自注意力机制在自然语言处理(NLP)、计算机视觉、语音识别及推荐系统等领域展现出卓越性能。其核心步骤包括生成查询(Q)、键(K)和值(V)向量,计算缩放点积注意力得分,应用Softmax归一化,以及加权求和生成输出。自注意力机制提高了模型的表达能力,带来了更精准的服务。
      |
      6天前
      |
      消息中间件 人工智能 运维
      1月更文特别场——寻找用云高手,分享云&AI实践
      我们寻找你,用云高手,欢迎分享你的真知灼见!
      521 22
      1月更文特别场——寻找用云高手,分享云&AI实践
      |
      6天前
      |
      机器学习/深度学习 人工智能 自然语言处理
      |
      12天前
      |
      人工智能 自然语言处理 API
      阿里云百炼xWaytoAGI共学课DAY1 - 必须了解的企业级AI应用开发知识点
      本课程旨在介绍阿里云百炼大模型平台的核心功能和应用场景,帮助开发者和技术小白快速上手,体验AI的强大能力,并探索企业级AI应用开发的可能性。