子目录-使用Python浏览文件和子文件夹

我想浏览当前文件夹及其所有子文件夹,并获取所有扩展名为.htm | .html的文件。 我发现可以找到一个对象是目录还是文件,如下所示:

import os

dirList = os.listdir("./") # current directory
for dir in dirList:
  if os.path.isdir(dir) == True:
    # I don't know how to get into this dir and do the same thing here
  else:
    # I got file and i can regexp if it is .htm|html

最后,我想将所有文件及其路径放在一个数组中。 这样有可能吗?

Blackie123 asked 2020-02-21T19:47:47Z
5个解决方案
114 votes

您可以使用os.walk()递归遍历目录及其所有子目录:

for root, dirs, files in os.walk(path):
    for name in files:
        if name.endswith((".html", ".htm")):
            # whatever

要构建这些名称的列表,可以使用列表理解:

htmlfiles = [os.path.join(root, name)
             for root, dirs, files in os.walk(path)
             for name in files
             if name.endswith((".html", ".htm"))]
Sven Marnach answered 2020-02-21T19:48:04Z
7 votes

我有类似的事情要做,这就是我的工作方式。

import os

rootdir = os.getcwd()

for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        #print os.path.join(subdir, file)
        filepath = subdir + os.sep + file

        if filepath.endswith(".html"):
            print (filepath)

希望这可以帮助。

Pragyaditya Das answered 2020-02-21T19:48:28Z
3 votes

使用newDirName = os.path.abspath(dir)为子目录创建完整的目录路径名,然后像对父目录一样列出其内容(即newDirList = os.listDir(newDirName)

您可以创建代码段的单独方法,然后通过子目录结构递归调用它。 第一个参数是目录路径名。 每个子目录都会改变。

该答案基于Python库的3.1.1版本文档。 《 Python 3.1.1库参考》(第10章-文件和目录访问)的第228页有一个很好的示例示例。祝好运!

NeonJack answered 2020-02-21T19:48:58Z
0 votes

Sven Marnach解决方案的版本略有更改。


import os

folder_location = 'C:\SomeFolderName' file_list = create_file_list(folder_location)

def create_file_list(path): return_list = []

for filenames in os.walk(path): for file_list in filenames: for file_name in file_list: if file_name.endswith((".txt")): return_list.append(file_name) return return_list

campervancoder answered 2020-02-21T19:49:18Z
0 votes

在python 3中,您可以使用os.scandir():

for i in os.scandir(path):
    if i.is_file():
        print('File: ' + i.path)
    elif i.is_dir():
        print('Folder: ' + i.path)
Spas answered 2020-02-21T19:49:38Z
translate from https://stackoverflow.com:/questions/5817209/browse-files-and-subfolders-in-python