Ce qu'on veux faire

L'idée est de récupérer une liste de ce type:

SEQ006PL055.mov -> 134 images
SEQ006PL056.mov -> 97 images
SEQ006PL057.mov -> 63 images
etc...

Ladite liste étant les fichiers Quicktime d'un dossier...

Et maintenant, le python
import os
import re
 
def frameCount(path):
	for fileName in os.listdir(path):
		filePath = path+"/"+fileName	#"C:/myQuicktimeFiles" + "/" + "SEQ006PL055.mov"
		if(os.access(filePath, os.F_OK)):	#verifie que le chemin filePath est bien un fichier et qu'on peut y acceder
			handle = os.popen("C:/MediaInfo/MediaInfo.exe --Inform=Video;%FrameCount% "+filePath).read()	#recupere la sortie du programme
			print(fileName+" -> "+re.sub("\n", "", handle)+" images")	#affiche le resultat
 
frameCount("C:/myQuicktimeFiles")

Dans un premier temps, il faut lister les fichiers contenus dans le dossier spécifié. Pour ça, nous utilisons la methode os.listdir():

>>> os.listdir("C:/myQuicktimeFiles")
['SEQ006PL055.mov', 'SEQ006PL056.mov', 'SEQ006PL057.mov']

Pour exécuter une commande système en python on peut utiliser plusieurs méthodes. La première que j'ai utilisé fut:

os.system("ma commande")

Mais le problème est que cette commande renvois la valeur de retour du programme (souvent "0" ce qui signifie que tout c'est bien passé) mais elle ne renvois pas ce qu'écrit le programme et c'est précisément ça qui nous intéresse.

Après quelques recherche j'ai trouvé exactement la commande qui m'intéressait:

os.popen("ma commande")

Cette commande renvois donc tout ce qu'a sortie la commande exécutée dans un "tunnel de communication"... J'ai un peu galéré pour savoir comment "réinterpréter" tout ça mais voici la commande que j'ai trouvé ici:

os.popen("ma commande").read()

Avec ça, nous avons une chaine de caractère toute propre comme si elle sortait de notre console! :sourit:

Au niveau du print j'ai du faire une bidouille pour éviter qu'il ne saute deux ligne à chaque ligne:

re.sub("\n", "", handle)

Cette ligne "substitue" les caractère de retour à la ligne "\n" par "rien" dans la chaine de caractère "handle"

Et c'est tout! (Enfin je crois... ^^ )

Ce deuxième tuto n'était qu'une formalité comparé au précédent mais il était dans la continuité.

N'hésitez pas à poster un commentaire si vous rencontrez des difficultés lié à l'utilisation de ce tutorial.

A bientôt!