我正在尝试编写使用递归函数搜索目录中文件的代码,并返回与搜索项匹配的文件的路径。但是,当我使用" ../.."时,我不断收到此错误;作为路径名称" 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的东西。
答案 0 :(得分:2)
您收到权限错误,因为Application Data
不是Windows 7+中的真实文件夹,而是指向C:\Program Files
的“联结”(Unix-speak中的符号链接)。它仅用于向后兼容。
您有两种选择:
您可以通过win32file
阅读包含一些特定于Windows的本机代码的联结。请参阅this SO回答。
您可以捕获权限错误,并忽略它(可能会打印一条警告消息)。这可能是更好的选择,除非真的需要阅读此文件夹。