2017-07-11 1 views
0

Mit Pyton> = 3.5 unterstützt glob rekursive Suche. Ich versuche das zu tun, aber ohne Erfolg.Python3.5 recursive glob zeigt keine übereinstimmenden Dateien an

Hier können Sie meine Verzeichnisstruktur sehen:

/Volumes/user/TEST/ 
└── [NAME]john\ doe,\ peter\ griffin\ -\ sample\ video[29.06.17][1080]{user} 
    ├── [NAME]john\ doe,\ perter\ griffin\ -\ sample\ video[29.06.17][1080]{user}.mp4 
    ├── [NAME]john\ doe,\ peter\ griffin\ -\ sample\ video[29.06.17][Hi-Res] 
    │   ├── 583a6ea574035-img-8399.jpg 
    │   ├── 583a6eb9681c0-img-8401.jpg 
    │   ├── 583a6eb9e53e1-img-8402.jpg 
    │   ├── 583a6ecad078d-img-8404.jpg 
    │   ├── 583a6ecd207ed-img-8403.jpg 
    │   ├── 583a6edb7348c-img-8405.jpg 
    │   ├── 583a6ede1cbfa-img-8406.jpg 
    │   ├── 583a6eeb294a9-img-8407.jpg 
    │   ├── 583a6eee94a45-img-8408.jpg 
    │   ├── 583a6efb2389a-img-8409.jpg 
    │   ├── 583a6f01a78ae-img-8410.jpg 
    │   ├── 583a6f0daea30-img-8411.jpg 
    │   ├── 583a6f1301e3c-img-8412.jpg 
    │   ├── 583a6f1ec07d8-img-8413.jpg 
    │   ├── 583a6f240d4ce-img-8414.jpg 
    │   ├── 583a6f306f517-img-8415.jpg 
    │   ├── 583a6f36def7a-img-8416.jpg 
    │   ├── 583a6f4280706-img-8417.jpg 
    │   ├── 583a6f48b8b11-img-8418.jpg 
    │   ├── 583a6f55160cc-img-8419.jpg 
    │   ├── 583a6f5b7fb35-img-8420.jpg 
    │   ├── 583a6f68aad40-img-8423.jpg 
    │   ├── 583a6f6da8c0b-img-8424.jpg 
    │   ├── 583a6f7b9e1d6-img-8425.jpg 
    │   ├── 583a6f8069e59-img-8426.jpg 
    │   ├── 583a6f8e9891e-img-8427.jpg 
    │   ├── 583a6f9427910-img-8428.jpg 
    │   ├── 583a6fa45e3f4-img-8429.jpg 
    │   ├── 583a6fa96b182-img-8430.jpg 
    │   ├── 583a6fb935bf2-img-8431.jpg 
    │   ├── 583a6fca7a0c9-img-8433.jpg 
    │   ├── 583a6fcbab549-img-8434.jpg 
    │   ├── 583a6fdcf2812-img-8435.jpg 
    │   ├── 583a6fde5ee86-img-8436.jpg 
    │   ├── 583a6fee54d9b-img-8437.jpg 
    │   ├── 583a6ff0acb76-img-8438.jpg 
    │   ├── 583a7000ecd80-img-8439.jpg 
    │   ├── 583a70026c325-img-8440.jpg 
    │   ├── 583a701319c22-img-8441.jpg 
    │   ├── 583a701457221-img-8443.jpg 
    │   ├── 583a7027e8531-img-8444.jpg 
    │   ├── 583a7029f0e7c-img-8445.jpg 
    │   ├── 583a703d6c3c9-img-8446.jpg 
    │   ├── 583a703f879f5-img-8447.jpg 
    │   ├── 583a7051ae77a-img-8448.jpg 
    │   ├── 583a705b588c3-img-8449.jpg 
    │   ├── 583a706d40811-img-8450.jpg 
    │   ├── 583a7076cb3e9-img-8451.jpg 
    │   ├── 583a70894ec35-img-8452.jpg 
    │   ├── 583a70964fbcb-img-8453.jpg 
    │   ├── cai-8498-pa.jpg 
    │   └── cai-8498-pt.jpg 
    ├── [NAME]john\ doe,\ peter\ griffin\ -\ sample\ video[29.06.17][Hi-Res].jpg 
    └── cover.png 

So sind die Bilder auf jeden Fall dabei sind. Hier ist meine Methode, die aus irgendeinem Grund nicht funktioniert:

def count_images(folder): 
    """ 
    Count the number of images in a folder. 
    :param folder: Folder to count the images 
    :return: Number of photos 
    """ 
    print(folder) 
    files = [file for file in glob.glob(folder + '/**/*.jpg', recursive=True)] 
    print(files) 
    return len([file for file in glob.glob(folder + '/**/*.jpg', recursive=True)]) 

Aber es gibt nur die folgenden:

/Volumes/user/TEST/[NAME]john doe, peter griffin - sample video[29.06.17][1080]{user}/ 
[] 

Es ist extrem frustrierend geworden, wie ich was sehe ich nicht mache ich falsch.

+0

Try ' '/ **/**/* jpg'' –

+0

@ cᴏʟᴅsᴘᴇᴇᴅ keinen Unterschied. – rhillhouse

Antwort

0

So habe ich das Problem gefunden. Das glob Modul hat Probleme mit bestimmten Zeichen im Dateinamen - [ und ] in diesem Fall. Sie können glob.escape() verwenden, um diese Zeichen im Dateinamen zu umgehen.

So ist die letzte Funktion wird wie folgt aussehen:

def count_images(folder): 
    return len([file for file in glob.glob(glob.escape(folder) + '/**/*.jpg', recursive=True)])