Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/10/2008, à 13:27

leportois

[python]Script executable qui devient non executable

J'avais eu des problemes pour rendre executable un script python, probleme résolu ici
http://forum.ubuntu-fr.org/viewtopic.php?pid=1452184
Aujourd'hui cette méthode fonctionne une fois sur deux, et sans toucher au code : un coup le script va s'executer, puis ca ne fonctionnera plus et je devrais passer par un terminal. Quelqu'un saurait-il pourquoi ?

Je vous mets le code en entier pour info :

#!/usr/bin/env python
from os import getcwd,listdir, rename

#from os import rename,listdir,getcwd

#from string import replace

titres = listdir(getcwd())

#la liste des fichiers presents dans le repertoire est placee dans 'titres'

titres.remove('rename.py')

tot = len(titres)

i=0

while i<tot:

	#on traite les titres un par un

	tt=titres[i]

	ttt=tt

	#ttt=ttt.replace('(','')

	ttt=ttt.replace(' - ','. ')

	#ttt=ttt.replace(' - ','. ')

	print ttt

	rename(tt,ttt)

	print tt

	i=i+1

Dernière modification par leportois (Le 19/10/2008, à 13:40)


Si les poils dans la main étaient urticants, yaurait moins de branleurs

Hors ligne

#2 Le 19/10/2008, à 16:27

kaer

Re : [python]Script executable qui devient non executable

Je parie que les fois ou ça ne marche pas, c'est quand rename.py n'existe pas.
Si tu t'en fous, à la place de :

titres.remove('rename.py')

tu peux mettre (non testé):

try: titres.remove('rename.py')
except ValueError: pass

ou:

 if 'rename.py' in titres: titres.remove('rename.py')

Ceci dit, c'est une mauvaise pratique de ne pas avoir de trace de l'exécution.
Soit dans un gui, soit tu balances le traceback éventuel dans un fichier (et ceci soit au niveau du bash, soit dans le script même comme dans l'exemple ci-dessous).

Ton script modifié (non testé):

#!/usr/bin/env python
try:
    from os import getcwd, listdir, rename
    titres = listdir(getcwd())
    try: titres.remove('rename.py')
    except ValueError: pass
    for titre in titres:
        nouveau_titre=titre.replace(' - ','. ')
        rename(titre, nouveau_titre)
        print "%s-->%s" % (titre, nouveau_titre)
except:
    from traceback import print_exc
    print_exc(file=file('ERRORS', 'w'))

Bonne chance !

Dernière modification par kaer (Le 19/10/2008, à 16:35)

Hors ligne

#3 Le 19/10/2008, à 16:58

leportois

Re : [python]Script executable qui devient non executable

En fait, rename.py existe toujours, c'est le nom de mon script.
Je vais essayer ton code et voir ce que ca me dit.


Si les poils dans la main étaient urticants, yaurait moins de branleurs

Hors ligne