我试图编写使用递归函数在目录中搜索文件的代码,并返回与搜索项匹配的文件的路径。但是,当我使用“../..”作为路径名“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。在
您得到了一个权限错误,因为
Application Data
不是Windows 7+中的真正文件夹,而是指向C:\Program Files
的“连接”(Unix语言中的符号链接)。它的存在只是为了向后兼容。在您有两种选择:
您可以通过
win32file
读取带有某些特定于Windows的本机代码的连接。看this所以回答。您可以捕获权限错误,并忽略它(可能会打印一条警告消息)。这可能是更好的选择,除非你真的需要阅读这个文件夹。
相关问题 更多 >
编程相关推荐