Ich möchte auf einmal nach JPG oder PNG suchen. Selbst wenn ich im Internet gesucht hätte, könnte ich es nicht in einer Zeile tun. Aber mit rekursiv konnte ich es nicht in einer Zeile machen ... Es ist Python2.7.
import glob
from compiler.ast import flatten
search_dir = "path/to/"
ext_list = ["jpg", "png"]
file_list = flatten([f for f in [glob.glob(search_dir + "*." + ext) for ext in ext_list]])
Ein weiterer. Dieser war etwas schneller.
import os
import glob
from itertools import chain
search_dir = "path/to/"
ext_list = ["jpg", "png"]
file_list = list(chain.from_iterable([glob.glob(os.path.join(search_dir, "*." + ext)) for ext in ext_list]))
・ Wenn die Anzahl klein ist, ist dies
import os
search_dir = "path/to/"
ext_list = ["jpg", "png"]
file_list = []
for root, dirs, files in os.walk(search_dir):
for ext in ext_list:
file_list.extend([os.path.join(root, file) for file in files if ext in file])
・ Wenn viele Dateien vorhanden sind, ist es schwierig, eine Liste zu erstellen.
import os
#Bereiten Sie eine Funktion zum rekursiven Abrufen von Dateien mit Yield vor
def get_file_recursive(search_dir, ext_list):
for root, dirs, files in os.walk(search_dir):
for ext in ext_list:
for file in [file for file in files if ext in file]:
yield os.path.join(root, file)
search_dir = "path/to/"
ext_list = ["jpg", "png"]
file_list = get_file_recursive(search_dir, ext_list)
Recommended Posts