【问题标题】:Search all files with same name in a directory python搜索目录python中所有同名文件
【发布时间】:2019-11-17 19:08:30
【问题描述】:

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

【问题讨论】:

  • 如果您自己尝试过任何事情,请告诉我们。这对我们会有帮助。
  • 具体是tv.sas7bdat 还是所有重复的文件,或者所有按文件名分组的文件?
  • 文件tv.sas7bdat在目录中是否存在多次?
  • @Alexander Ejbekov 它特定于该文件,因为我也需要对其他特定文件执行相同的过程
  • @Amine Messaoudi 是的,它在不同的文件夹中多次出现

标签: python directory path subdirectory file-search


【解决方案1】:

你可以试试下面的代码,其中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)

【讨论】:

  • 什么都没有发生!!
【解决方案2】:

您可以使用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)

【讨论】:

  • 请在哪里注明目录的路径
  • 对不起,您可以删除os.getcwd() 并提供您的目录路径。 os.getcwd() 获取当前工作目录。
【解决方案3】:

如果我解决了您的问题,您可以使用 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:至于您问题中的 cmets,下次请在您的问题中提供尽可能多的详细信息并提供您尝试的代码,请参阅asking guidelines

【讨论】:

  • 对不起,我认为我的问题很明显很清楚,谢谢
【解决方案4】:

希望下面的代码完全适合你:

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)

【讨论】:

    【解决方案5】:

    你可以使用ospython包结合递归函数来搜索某个目录

    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 , [])
    

    【讨论】:

    • 你能指出我应该在哪里输入目录路径吗?
    • 你应该在变量 directory_to_search 中输入它^^
    • 是的,我已经这样做了,但仍然显示:目录未定义
    • 我的错误是我在调用函数时写错了变量名。我编辑了我的答案,将您的目录放在 directory_to_search 变量中时再试一次 :)
    猜你喜欢
    • 2019-11-17
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多