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 24/08/2012, à 10:12

kboo

[Résolu] utilisation xargs: génération de pyc

Bonjour,
Décidément je galère pas mal à faire cette bonne petite ligne de commande:

Je cherche à compiler automatiquement tous les fichiers python modifiés. Pour détecter une modification je passe par un fichier contenant les clefs Md5 de chaqu'un d'eux, si une modification est détectée le fichier python doit être compilé (.pyc):

pour compiler un fichier python en bash voici la commande:

python -m py_compile "/chez moi/il y a des fichiers/python/script.py"

Si je ne met pas les guillemets j'obtiens

Traceback (most recent call last):
  File "/usr/lib/python2.6/runpy.py", line 122, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.6/runpy.py", line 34, in _run_code
    exec code in run_globals
  File "/usr/lib/python2.6/py_compile.py", line 184, in <module>
    sys.exit(main())
  File "/usr/lib/python2.6/py_compile.py", line 176, in main
    compile(filename, doraise=True)
  File "/usr/lib/python2.6/py_compile.py", line 115, in compile
    f = open(file, 'U')
IOError: [Errno 2] No such file or directory: './chez'

donc ces guillemets sont obligatoires pour gérer les espaces

Or voici la commande actuelle:

md5sum -c filetmp.md5 | grep -oP '(.*py)(?=: ÉCHEC$)' | xargs -0 python -m py_compile

et là je sèche car j'obtiens la liste de tous les fichiers python séparés par des \n avec à la fin

xargs: python : a terminé son exécution avec le statut 255 ; arrêt abrupt.

Je pense que c'est lié aux guillemets manquantes mais je n'arrive pas à les mettre avec xargs, comment faire je sèche :-/

Merci infiniment pour votre aide!!!

Dernière modification par kboo (Le 27/08/2012, à 09:05)

Hors ligne

#2 Le 24/08/2012, à 11:08

grim7reaper

Re : [Résolu] utilisation xargs: génération de pyc

Salut,

Je pense que l’option -d est ton amie smile

man 1 xargs a écrit :

       --delimiter=delim
       -d delim
              Input  items  are  terminated  by  the specified character.  Quotes and backslash are not special; every character in the input is taken literally.  Disables the end-of-file string, which is treated like any other argument.  This can be used when the input consists of simply newline-separated items, although it is almost always better to  design your  program to use --null where this is possible.  The specified delimiter may be a single character, a C-style character escape such as \n, or an octal or hexadecimal escape code.  Octal and hexadecimal escape codes are understood as for the printf command.   Multibyte characters are not supported.

Donc un truc du genre :

md5sum -c filetmp.md5 | grep -oP '(.*py)(?=: ÉCHEC$)' | xargs -d "\n" -0 python -m py_compile

devrait faire l’affaire (j’ai pas testé, mais c’est ça l’idée).

Dernière modification par grim7reaper (Le 24/08/2012, à 11:12)

Hors ligne

#3 Le 24/08/2012, à 11:14

credenhill

Re : [Résolu] utilisation xargs: génération de pyc

hello
et avec ?

md5sum -c filetmp.md5 | grep -oP '(.*py)(?=: ÉCHEC$)' | xargs -i python -m py_compile {}

Dernière modification par credenhill (Le 24/08/2012, à 11:34)

Hors ligne

#4 Le 27/08/2012, à 08:50

kboo

Re : [Résolu] utilisation xargs: génération de pyc

bonjour,
et merci pour vos réponses,
grim7reaper: l'idée est bonne mais ne fonctionne pas, je ne comprend pas pourquoi d'ailleurs!
credenhill: Nickel, j'avais juste eu peur car il n'y a aucun affichage de retour, mais la solution est simple et fonctionne très bien


Merci beaucoup!!!!

Hors ligne

#5 Le 27/08/2012, à 09:24

credenhill

Re : [Résolu] utilisation xargs: génération de pyc

ajouter l'option -t pour qu'xargs affiche ce qu'il fait

Hors ligne

#6 Le 27/08/2012, à 10:17

kboo

Re : [Résolu] utilisation xargs: génération de pyc

credenhill: Effectivement ça fonctionne beaucoup mieux, par contre as tu une idée pour comment masquer l'affichage des erreurs de recopie du genre "mv: impossible d'évaluer « /home/projet/src/*.pyc »: Aucun fichier ou dossier de ce type" ?
merci bien smile

Hors ligne

#7 Le 27/08/2012, à 10:30

credenhill

Re : [Résolu] utilisation xargs: génération de pyc

dans quel cas cette erreur apparait ?
problème de " autour des noms avec espaces ?

Hors ligne

#8 Le 27/08/2012, à 11:09

kboo

Re : [Résolu] utilisation xargs: génération de pyc

L'erreur apparait quand il n'y a aucun fichier à déplacer, donc tout fonctionne mais j'aurais bien voulu que ce message n'apparaisse pas

Hors ligne

#9 Le 27/08/2012, à 12:45

pingouinux

Re : [Résolu] utilisation xargs: génération de pyc

Bonjour,
Pour ne pas voir les messages d'erreur :

commande 2>/dev/null

Hors ligne

#10 Le 27/08/2012, à 13:22

kboo

Re : [Résolu] utilisation xargs: génération de pyc

Merci pingouinux, c'est nickel maintenant ! smile

Dernière modification par kboo (Le 27/08/2012, à 13:22)

Hors ligne