使用 python 读取目录及其子目录的内容

reading content of a directory and its subdirectories with python

我的目录 path/to/dir 包含 10 个子目录。所有子目录中都有文件。我想将每个子目录中的这些文件附加到一个唯一列表中。 我该怎么做?

import glob
path = '\path\to\dir\'
files = [f for f in glob.glob(path + "**/*", recursive=True)]

我的理解是您只想列出特定目录及其子目录中的所有文件名。

list1=[] #Empty list

for root, dirs, files in os.walk(fr"path\to\directory", topdown=False): 
#Listing Directory
    for name in files:
        a=os.path.join(root, name)
        print(a)
        list1.append(a)
import os
path="C://Users//<user_name>//Desktop"
obj = os.scandir()
print("Files and Directories in '% s':" % path)
for entry in obj:
    if entry.is_dir() or entry.is_file():
        print(entry.name)

列出整个目录:

import os
def list_dirs(path):
  obj = os.scandir(path)
  for entry in obj:
      if entry.is_dir():
        print(1,entry.path)
        list_dirs(entry)
      elif entry.is_file():
        print(2,entry.name)
      else:
        break
list_dirs(path)

它基本上使用了 os.scandir 方法,它提供了速度和更多好处,如文件元数据等,递归获取整个目录的列表。

也是@FaraazKurawle 的回答的列表理解方法:

def list_dir(path):
  path=fr"{path}"
  list_1=[os.path.join(root, name) for root, dirs, files in os.walk(path, topdown=False) for name in files]
  return list_1

一些有用的链接: