Per più estensioni, il più semplice è solo per usare str.endswith
passando una tupla di stringhe per controllare:
for file in files:
if file.endswith((".avi",".mp4","wmv")):
print (os.path.join(subdir, file))
Si potrebbe utilizzare iglob
come qui di seguito e catena le ricerche restituiti o utilizzare re.search ma utilizzando endswith
è probabilmente l'approccio migliore.
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))
Utilizzando python3.5
glob ora supporta ricerche ricorsive con il ** sintassi:
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)
fonte
2015-08-11 17:47:54
Grazie a ozgur, questo codice è il più vicino a quello che avevo originariamente - facile da capire. Le altre risposte potrebbero essere più efficienti se fatte su larga scala (non testate!), Ma per i miei compiti semplici questo sarà perfettamente sufficiente. – pufAmuf