#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
--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
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 !
Dernière modification par kboo (Le 27/08/2012, à 13:22)
Hors ligne