【问题标题】:How to print the file names in subdirectories with python glob.glob()如何使用 python glob.glob() 打印子目录中的文件名
【发布时间】:2021-10-16 20:10:42
【问题描述】:

我有一个包含两个子目录 cat 和 dog 的根目录。在那里,我有一些文本文件。我正在尝试遍历所有子目录并打印文件名。下面是代码:

import glob
path = '/Users/msmacbook/Desktop/test/'
for x in glob.glob(path+'**/*'):
    print(x.replace(path, ""))

这是输出:

cat/cat1
cat/cat2
cat/cat3
dog/dog1
dog/dog2
dog/dog3

其中 cat 和 dog 是子目录,而 cat1..etc、dog1..etc 是文件。

如何只打印/检索文件名?我想要的输出是

cat1
cat2
cat3
dog1
dog2
dog3

【问题讨论】:

    标签: python python-3.x glob


    【解决方案1】:

    您可以根据/ 字符拆分路径并打印第二个(最后一个)元素,

    for x in glob.glob(path+'**/*'):
        x = x.replace(path, "").split('/')
        print(x[-1])
    

    【讨论】:

      【解决方案2】:

      documentation of the glob module 建议使用来自pathlib 库的高级路径对象。后者自 2014 年发布的 Python 3.4 以来一直存在,现在没有理由不使用它。

      要在给定的根folder 下仅打印文件名而不是完整路径,您可以这样做:

      from pathlib import Path
      
      folder = Path('/Users/msmacbook/Desktop/test')
      for file in folder.rglob('*'):
          print(file.name)
      

      【讨论】:

        【解决方案3】:

        你可以使用os.path.basename:

        import os
        import glob
        
        path = '/Users/msmacbook/Desktop/test/'
        
        for x in glob.glob(path + '**/*'):
            print(os.path.basename(x))
        

        【讨论】:

          猜你喜欢
          • 2017-09-28
          • 1970-01-01
          • 1970-01-01
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多