在目录python中搜索所有具有相同名称的文件

时间:2019-07-08 09:31:53

标签: python directory path subdirectory file-search

我有一个问题: 我需要获取目录中文件的路径,我有一个包含其他文件夹和其他文件夹等的文件夹。。。每个文件夹都包含一个文件“ tv.sas7bdat”,我需要获取该文件的每个路径。 谢谢!!!

5 个答案:

答案 0 :(得分:2)

您可以尝试以下代码,其中PATH代表父目录

import os
def getAlldirInDiGui(path,resultList):
    filesList=os.listdir(path)
    for fileName in filesList:
        fileAbpath=os.path.join(path,fileName)
        if os.path.isdir(fileAbpath):
            getAlldirInDiGui(fileAbpath,resultList)
        else:
            if fileName=='tv.sas7bdat':
                resultList.append(fileAbpath)
resultList = []
PATH = ""
getAlldirInDiGui(PATH,resultList)

答案 1 :(得分:1)

如果我的问题没错,那么您可以使用Python的os.walk函数来实现您的目标,就像这样:

import os
for root, dirs, files in os.walk("<starting folder here>", topdown=False):
    for name in files:
        if name == "tv.sas7bdat":
            print(os.path.join(root, name))

p.s:关于您的问题的评论,下次请提供您问题中尽可能多的详细信息并提供您尝试的代码,请参见asking guidelines

答案 2 :(得分:1)

希望以下代码对您完全有用:

import glob
initial_path = "c:\<intital folder location>"
files = [file for file in glob.glob(initial_path+ "tv.sas7bdat" , recursive=True)]
for f in files:
    print(f)

答案 3 :(得分:1)

您可以结合使用os python软件包和递归函数来搜索特定目录

import os
from os.path import isfile, join, isdir

def get_files_path(directory, paths):
    for item in os.listdir(directory):
        if isfile(join(directory, item)) and item == "tv.sas7bda":
            paths.append(directory + item)
        elif isdir(directory+item):
            get_files_path(directory + item, paths)
    return paths

directory_to_search = "./"
get_files_path(directory_to_search , [])

答案 4 :(得分:1)

您可以使用os.walk()

import os

for root, dirs, files in os.walk(os.getcwd()):
    for f in files:
        if f.find("tv.sas7bdat")>=0:
            print(root,f)