Browse files and subfolders in Python

前端 未结 5 1796
有刺的猬
有刺的猬 2020-11-28 03:29

I\'d like to browse through the current folder and all its subfolders and get all the files with .htm|.html extensions. I have found out that it is possible to find out whet

相关标签:
5条回答
  • 2020-11-28 04:01

    In python 3 you can use os.scandir():

    for i in os.scandir(path):
        if i.is_file():
            print('File: ' + i.path)
        elif i.is_dir():
            print('Folder: ' + i.path)
    
    0 讨论(0)
  • 2020-11-28 04:04

    I had a similar thing to work on, and this is how I did it.

    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)
    

    Hope this helps.

    0 讨论(0)
  • 2020-11-28 04:10

    Slightly altered version of Sven Marnach's solution..

    
    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

    0 讨论(0)
  • 2020-11-28 04:13

    Use newDirName = os.path.abspath(dir) to create a full directory path name for the subdirectory and then list its contents as you have done with the parent (i.e. newDirList = os.listDir(newDirName))

    You can create a separate method of your code snippet and call it recursively through the subdirectory structure. The first parameter is the directory pathname. This will change for each subdirectory.

    This answer is based on the 3.1.1 version documentation of the Python Library. There is a good model example of this in action on page 228 of the Python 3.1.1 Library Reference (Chapter 10 - File and Directory Access). Good Luck!

    0 讨论(0)
  • 2020-11-28 04:25

    You can use os.walk() to recursively iterate through a directory and all its subdirectories:

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

    To build a list of these names, you can use a list comprehension:

    htmlfiles = [os.path.join(root, name)
                 for root, dirs, files in os.walk(path)
                 for name in files
                 if name.endswith((".html", ".htm"))]
    
    0 讨论(0)
提交回复
热议问题