使用python阅读有关目录及其子目录的信息

时间:2018-09-15 14:59:53

标签: python django glob

我正在研究一个python(3.6)项目,其中需要克隆一个GitHub存储库,该存储库的目录结构为:

|parent_DIR
|--sub_DIR
   |file1....   
   |file2....
|--sub_DIR2
   |file1...

现在我需要获取以下信息:

1. Parent directory name
2. How many subdirectories are
3. names of subdirectories

这是我克隆GitHub存储库的方式:

from views.py:

# clone the github repo
tempdir = tempfile.mkdtemp()
saved_unmask = os.umask(0o077)
out_dir = os.path.join(tempdir)
Repo.clone_from(data['repo_url'], out_dir)

2 个答案:

答案 0 :(得分:0)

要遍历目录,请使用os.scandir(path='parent_directory')。这将返回os.DirEntry个对象的迭代器,父目录中的每个文件或目录一个。 dir_entry.name将为您提供文件/子目录名称,并且对象is_dir()可以告诉您该条目是否是目录。对于每个子目录,请再次调用相同的函数,依次对子目录的每个子目录进行调用(如果存在)。

要获取目录中的目录和文件数,请为迭代器返回的每个对象增加一个计数器(请注意,这将包括...

答案 1 :(得分:0)

可能的话,您可以使用os.walk(dir)(下面的代码示例)。

import os
import tempfile


tempdir = tempfile.mkdtemp()
saved_unmask = os.umask(0o077)
out_dir = os.path.join(tempdir)

# Create a few dirs.
os.makedirs(out_dir + "/parent_DIR")
os.makedirs(out_dir + "/parent_DIR/sub_DIR")
os.makedirs(out_dir + "/parent_DIR/sub_DIR2")
os.makedirs(out_dir + "/parent_DIR/sub_DIR3")
os.makedirs(out_dir + "/parent_DIR/sub_DIR3/subsub_DIR")

i = 0
for _, subdir_list, _ in os.walk(out_dir):
    if i == 0:
        parent_dir_name = subdir_list[0]
    else:
        break  # Do not go deeper.
    i += 1

print("The parent dir name is: %s" % parent_dir_name)
print("The number of subdirs is: %s" % len(subdir_list))
print("The list of subdirs is: %s" % subdir_list)

我的示例输出:

The parent dir name is: parent_DIR
The number of subdirs is: 3
The list of subdirs is: ['sub_DIR3', 'sub_DIR', 'sub_DIR2']