J'ai donc deux répertoires avec deux types de fichiers différents (par exemple .csv, .png) mais avec le même nom de base (par exemple 1001_12_15.csv, 1001_12_15.png). J'ai plusieurs milliers de fichiers dans chaque répertoire.
Ce que je veux faire, c'est obtenir les chemins complets des fichiers, après avoir fait correspondre les noms de base, puis FAIRE quelque chose avec le chemin complet des deux fichiers.
Je demande de l'aide pour accélérer la procédure.
Mon approche est la suivante :
csvList=[a list with the full path of each .csv file]
pngList=[a list with the full path of each .png file]
for i in range(0,len(csvlist)):
csv_base = os.path.basename(csvList[i])
#eg 1001
csv_id = os.path.splitext(fits_base)[0].split("_")[0]
for j in range(0, len(pngList)):
png_base = os.path.basename(pngList[j])
png_id = os.path.splitext(png_base)[0].split("_")[0]
if float(png_id) == float(csv_id):
DO SOMETHING
de plus j'ai essayé fnmatch quelque chose comme :
for csv_file in csvList:
try:
csv_base = os.path.basename(csv_file)
csv_id = os.path.splitext(csv_base)[0].split("_")[0]
rel_path = "/path/to/file"
pattern = "*" + csv_id + "*.png"
reg_match = fnmatch.filter(pngList, pattern)
reg_match=" ".join(str(x) for x in reg_match)
if reg_match:
DO something
Il semble que l'utilisation des boucles for imbriquées soit plus rapide. Mais je voudrais que ce soit encore plus rapide. Existe-t-il d'autres approches qui me permettraient d'accélérer mon code ?