[gull] probleme avec python et l'execution d'un programme externe

Christian Kaenzig christian at becool.ch
Tue Feb 7 23:27:59 CET 2006


Salut,

Le Mardi 7 Février 2006 21:47, Dominique-Georges Branciard a écrit :
> Hello la liste
[...]
> mais c'est vrai que je commence à me plonger dans python
[...]

Alors comme tu dis que tu débutes en Python, je vais me permettre de faire qqs 
remarques générales sur le Python. J'espère que ça peut t'être utile et que 
c'est pas trop considéré comme du bruit sur la liste... 

> alors voila voila mon code
>
> #!/usr/bin/python
> # -*- coding: iso-8859-15 -*-
>
> import os
>
>
> def trcfile(nomfile,rech):
> 	i = 0
> 	nc = 0
> 	while i < len(nomfile):
> 		if nomfile[i] == rech :
> 			nc = i
> 		i = i + 1
> 	return nc

La première chose, c'est assez stupide, mais ça ne coûterais rien d'utiliser 
des identificateurs un peu plus long que nc, rech (i ça va, c'est 
standard :). Ca peut faire beaucoup pour comprendre plus rapidement un code !

La deuxième, c'est que cette fonction existe déjà en Python (si j'ai bien 
compris ce que ça fait :) :

>>> "un.fichier.ext".rfind(".")
10

> class controle_file:
> 	file_dir = '/home/ludotheque/reception/'

Là, ce que tu as fait est sûrement temporaire, mais faire une classe juste 
pour une variable, c'est pas réellement utile :) !

> def main():
> 	ctrfile = controle_file()
>
> 	for fichier in  os.listdir(ctrfile.file_dir):
> 		# print fichier
> 		nc = trcfile(fichier,'.')
> 		fichierc = fichier[:nc]
> 		exten = fichier[nc+1:]
> 		allextend = '%s' % ctrfile.file_dir + fichierc + ' ' + exten
> 		print allextend
> 		try:
> 			ok = os.execl('cnvimage', 'cnvimage', ctrfile.file_dir + fichierc,
> exten )

Je m'y perd moi-même avec tous ces exec différents, mais comme l'a dit Daniel, 
un os.system("cnvimage "+paramètres) va très bien pour ça.

> 		except:
> 			print "error: "
> 		print "OK %s" % ok

Là, ça serait sûrement utile de savoir ce qui se passe comme erreur, au cas où 
il y en a une. De plus, tu peux mettre le print "OK" dans un else :

try:
	ok = ...
except Exception, message:
	print "error : " + message
else:
	print "OK " + ok

except Exception veut dire qu'on capture toutes les exception, parce que 
toutes les classes d'exceptions dérivent de Exception.

>
> if __name__=="__main__":
> 	main()
>
> merci de votre aide A+ DG Branciard

Pas de quoi :).

Bye, a+,
Christian

-- 
Christian Kaenzig
http://chrisk.name/



More information about the gull mailing list