Python列出目录中的文件
时间:2020-02-23 14:42:54 来源:igfitidea点击:
在本教程中,我们将看到如何在Python的目录中列出所有文件。
有多种方法可以在Python中列出所有文件。
使用OS.Walk.
Python OS模块提供多个函数来获取文件列表。
列出目录中的所有文件及其子目录使用 os.walk(path)
。
它迭代路径和每个目录的目录树,它返回一个元组(<目录名>,<子目录>列表,<文件>列表>)
import os path = '/users/apple/temp/' # create empty List listOfFiles = list() for( directory, subdirectories, file ) in os.walk(path): for f in file: listOfFiles.append(os.path.join(directory,f)) for file in listOfFiles: print(file)
输出:
/users/apple/temp/sample1.txt /users/apple/temp/sample2.txt /users/apple/temp/images/image1.jpeg /users/apple/temp/images/image2.jpeg
列出所有 .jpeg
目录中的文件及其子目录使用 os.walk(path)
。
import os path = '/users/apple/temp/' # create empty List listOfFiles = list() for( directory, subdirectories, file ) in os.walk(path): for f in file: if '.jpeg' in f: listOfFiles.append(os.path.join(directory,f)) for file in listOfFiles: print(file)
输出:
/users/apple/temp/images/image1.jpeg /users/apple/temp/images/image2.jpeg
使用OS.Listdir(路径)
你也可以使用 os.listdir(path)
获取目录中的文件和子目录列表。
如果,我们在迭代时获得子目录,然后我们调用 getListOfFiles(path)
递归。
以下是递归函数的实现 getListOfFiles(path)
。
def getListOfFiles(path): listOfFilesInDir = os.listdir(path) listOfAllFiles = list() # Iterate over all the files for obj in listOfFilesInDir: # get absolute path absolutePath = os.path.join(path, obj) # check if absolutePath is path of directory. If yes, then call the function recursively if os.path.isdir(absolutePath): listOfAllFiles = listOfAllFiles + getListOfFiles(absolutePath) else: listOfAllFiles.append(absolutePath) return listOfAllFiles
通过路径调用上述函数。
path = '/users/apple/temp/' # Get the list of all files in directory and its subdirectories listOfFiles = getListOfFiles(path) for f in listOfFiles: print(f)
使用glob.
我们可以使用Glob Module在目录及其子目录中列出文件。
它支持递归的球员使用 **
。
列出目录中的所有文件和子目录 glob.glob()
。
import glob path = '/users/apple/temp/' listOfFiles = [f for f in glob.glob(path + "**/*", recursive=True)] for file in listOfFiles: print(file)
列出所有 .txt
文件中的文件及其子目录
import glob path = '/users/apple/temp/' listOfFiles = [f for f in glob.glob(path + "**/*.txt", recursive=True)] for file in listOfFiles: print(file)
列出目录中所有子目录的名称。
import glob path = '/users/apple/temp/' listOfFiles = [f for f in glob.glob(path + "**/*", recursive=True)] for file in listOfFiles: print(file)