【问题标题】:Get the names of first folders only inside a directory using python仅在使用 python 的目录中获取第一个文件夹的名称
【发布时间】:2021-11-04 16:17:51
【问题描述】:

我正在尝试遍历一个文件夹,在其中,我将拥有多个其他文件夹,每个文件夹都可以包含其他子文件夹。树的一个例​​子可能是:

Dataset_Directory
  | Folder A
  | Folder B
  | Folder C
  | Folder D
      | Folder D1
      | Folder D1
  

我想要做的是只得到男人 4 个犯规者,即 A、B、C、D 并忽略任何子文件夹。

我的代码:

    folders = [os.path.basename(os.path.normpath(x[0])) for x in os.walk(
        app.config['DATASET_DIRECTORY']) if x[0] != 'static\Dataset_Directory']

    for folder in folders:
        print(folder)

这会输出列表中的所有文件夹和子文件夹,因为 os.walk 从目录树中获取所有内容。输出如下:

Folder A
Folder B
Folder C
Folder D
Folder D1
Folder D2

我想要达到的只是

Folder A
Folder B
Folder C
Folder D

关于如何阻止它读取子文件夹的任何建议?提前致谢。

【问题讨论】:

  • 这能回答你的问题吗? os.walk without digging into directories below
  • 如果不想递归,则不需要使用os.walk()
  • _, mainfolders, _ = next(os.walk(data_directory))
  • 感谢@blorgon 的建议,运行良好,但如果像我这样在服务器上运行会有点计算量。
  • @JohnGordon 的回答非常适合我的情况,谢谢。

标签: python python-3.x list operating-system


【解决方案1】:

你可以试试这个:

import os.path
dirs = [d for d in os.listdir('Dataset_Directory') if os.path.isdir(os.path.join('Dataset_Directory', d))]
print(dirs)

输出:

['Folder A', 'Folder C', 'Folder D', 'Folder B']

【讨论】:

    【解决方案2】:

    您还可以按如下方式使用 pathlib 库:

    from pathlib import Path
    print([x.name for x in Path('Dataset_Directory').iterdir() if x.is_dir()])  
    

    产量:

    ['Folder A', 'Folder C', 'Folder D', 'Folder B']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 2016-01-27
      相关资源
      最近更新 更多