Für mehrere Erweiterungen, ist die einfachste nur str.endswith
zu verwenden, um ein Tupel von Teil vorbei zu überprüfen:
for file in files:
if file.endswith((".avi",".mp4","wmv")):
print (os.path.join(subdir, file))
Sie iglob
wie unten und Kette, welche die Suche zurückgegeben oder re.search verwenden verwenden können, aber mit endswith
ist wahrscheinlich der beste Ansatz.
from itertools import chain
from glob import iglob
for subdir, dirs, files in os.walk(rootdir):
for file in chain.from_iterable(iglob(os.path.join(rootdir,p)) for p in ("*.avi", "*.mp4", "*wmv")) :
print(os.path.join(subdir, file))
Mit python3.5
glob unterstützt nun rekursive Suche mit dem ** Syntax:
from itertools import chain
from glob import iglob
from glob import iglob
for file in chain.from_iterable(iglob(os.path.join(rootdir,p))
for p in (rootdir+"**/*.avi", "**/*.mp4", "**/*wmv")):
print(file)
Dank ozgur, dieser Code ist am ehesten zu dem, was ich ursprünglich hatte - leicht zu verstehen. Die anderen Antworten könnten effizienter sein, wenn sie im großen Maßstab durchgeführt werden (nicht getestet!), Aber für meine einfachen Aufgaben wird dies vollkommen ausreichen. – pufAmuf