[英]Recursively searching for files in 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()
。 我可以使用它,但是它返回以我指定的文件名結尾的幾個路徑,然后返回WinError 5。
您收到權限錯誤,因為Application Data
在Windows 7+中不是真實的文件夾,它是指向C:\\Program Files
的“連接”(Unix中的符號鏈接)。 僅為了向后兼容而存在。
您有兩種選擇:
您可以通過win32file
讀取帶有某些Windows特定本機代碼的win32file
。 看到這個答案。
您可以捕獲到權限錯誤,然后將其忽略(可能會顯示警告消息)。 除非您確實需要閱讀此文件夾,否則這可能是更好的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.