2016-06-16 18 views

Antwort

4

Wahrscheinlich verwechseln Sie die Syntax regulärer Ausdrücke mit glob-Konstrukten. [0-9]* in globbing bedeutet "eine einzelne Ziffer, gefolgt von null oder mehr jeder Zeichen". Also lassen Sie die * fallen.

In erweitert Globbing ein Qualifikationsspiel von „ein oder mehrere“ ist, aber das von glob nicht unterstützt wird, so gibt es wenig anderes übrig, als einen regulären Ausdruck zu verwenden, das heißt tun für Ihre eigenen Dateinamen Muster. Es gibt mehrere Möglichkeiten, dies zu tun, ist hier ein:

import os 
import re 

files = [] 
for fname in os.listdir('.'): 
    if re.match(r"myfile_[0-9]+.txt", fname): 
     files.append(fname) 

print files 

Beachten Sie, dass die RE wie bei Ihnen nicht genau das gleiche, ich + verwenden, was bedeutet, „eine von mehreren der vorhergehenden Muster“, ein * würde bedeuten, "Null oder mehr" - also die Ziffern wären optional, was könnte das sein, was Sie wollen (ich bin mir nicht sicher).

Der Großteil des Codes als Liste Verständnis getan werden könnte, aber das wäre wohl locker einige Lesbarkeit:

files = [fname for fname in os.listdir('.') 
     if re.match(r"myfile_[0-9]+.txt", fname)]