簡體   English   中英

在Python中遞歸搜索文件

[英]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中的符號鏈接)。 僅為了向后兼容而存在。

您有兩種選擇:

  1. 您可以通過win32file讀取帶有某些Windows特定本機代碼的win32file 看到這個答案。

  2. 您可以捕獲到權限錯誤,然后將其忽略(可能會顯示警告消息)。 除非您確實需要閱讀此文件夾,否則這可能是更好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM