递归地在Python中搜索文件

2024-09-27 23:26:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写使用递归函数在目录中搜索文件的代码,并返回与搜索项匹配的文件的路径。但是,当我使用“../..”作为路径名“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()。我让它工作,但它返回几个以我指定的文件名结尾的路径,然后返回winerror5。在


Tags: 文件pathname路径inputifosmain
1条回答
网友
1楼 · 发布于 2024-09-27 23:26:10

您得到了一个权限错误,因为Application Data不是Windows 7+中的真正文件夹,而是指向C:\Program Files的“连接”(Unix语言中的符号链接)。它的存在只是为了向后兼容。在

您有两种选择:

  1. 您可以通过win32file读取带有某些特定于Windows的本机代码的连接。看this所以回答。

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

相关问题 更多 >

    热门问题