在Python中递归搜索文件

时间:2014-10-14 23:42:54

标签: python search recursion

我正在尝试编写使用递归函数搜索目录中文件的代码,并返回与搜索项匹配的文件的路径。但是,当我使用" ../.."时,我不断收到此错误;作为路径名称" PermissionError:[WinError 5]访问被拒绝:' ../ .. \ AppData \ Local \ Application Data'"。

import os
def main():

pathname=input('Please enter path name: ')
filenameinput=input('Please enter file name: ')

def disk_usage(path):

    if os.path.isdir(path):
        for filename in os.listdir(path):
            childpath = os.path.join(path, filename)
            if os.path.isdir(childpath):
                disk_usage(childpath)
            else:
                if childpath.endswith(filenameinput):
                    print(childpath)
#return 
disk_usage(pathname)
main()

我不应该为此使用os.walk()。我有它工作,但它返回以我指定的文件名结尾的几个路径,然后返回WinError 5的东西。

1 个答案:

答案 0 :(得分:2)

您收到权限错误,因为Application Data不是Windows 7+中的真实文件夹,而是指向C:\Program Files的“联结”(Unix-speak中的符号链接)。它仅用于向后兼容。

您有两种选择:

  1. 您可以通过win32file阅读包含一些特定于Windows的本机代码的联结。请参阅this SO回答。

  2. 您可以捕获权限错误,并忽略它(可能会打印一条警告消息)。这可能是更好的选择,除非真的需要阅读此文件夹。