zoukankan      html  css  js  c++  java
  • glob模块的使用

    当我们要在一个文件夹及其子文件夹里面寻找特定类型的文件,我们可能会这样写代码:

    • 没有子文件夹时

    import os
    
    all_file = os.listdir('target_folder')
    
    target_file = [x for x in all_file if x.endswith('.py')]
    • 有子文件夹时:

    import os
    
    py_files = []
    
    for root, folder, files in os.walk('.'):
        for file in files:
            if file.endswith('.py'):
                py_files.append(os.path.join(root, file))
    
    print(py_files)

    如果当前文件夹的结构如下所示:

    .
    
    ├── 1.py
    
    ├── 2.py
    
    ├── sub
    
    │   ├── 3.py
    
    │   ├── subsub1
    
    │   │   └── 4.py
    
    │   └── subsub2
    
    │   └── 5.py
    
    └── test.py

    那么运行结果如下图所示:

    虽然确实满足要求了,但是代码还是有点复杂,而是嵌套三层缩进,代码不够美观。

    实际上,要解决遍历文件的问题,只需要使用 Python 自带的 glob模块即可:

    import glob
    
     
    
    result = glob.glob('**/*.py', recursive=True)
    
    print(result)

    在使用 glob模块时,第一个参数指定目标文件的文件名格式,这里可以使用 Linux 中的通配符。如果文件名写为 *.py,那么就是当前文件夹下面的所有 .py文件。

    如果文件名写为 **/*.py,那么就是当前第一层子文件夹下面的所有 .py文件。

    如果文件名写为 **/*.py,并且增加参数 recursive=True,那么就是递归搜索当前文件夹和所有子文件夹。

    运行效果如下图所示:

    非常简单就实现了遍历文件夹查找文件的操作。

    转自:微信公众号:未闻code

  • 相关阅读:
    爱你就是我的幸福
    科学加艺术 85句管理名言
    转:IPV6及在UBUNTU和windows下的安装
    JXSE是否可以实现非阻塞IO?
    Transmitting and Receiving RTP over Custom Transport Layer
    多显示器
    可靠的双向管道和不可靠的双向管道
    the source for JMStudio
    转:浅析 Java Thread.join()
    Building Scalable and High Efficient Java Multimedia Collaboration
  • 原文地址:https://www.cnblogs.com/tjp40922/p/14095018.html
Copyright © 2011-2022 走看看