Poster une réponse à un sujet: [Python] Sourcer un (c)shell
Attention, ce sujet est un sujet ancien (5195 jours sans réponse)
Gras [b]Texte[/b] Italique [i]Italique[/i] Souligné [u]Souligné[/u] Barré [strike]Barré[/strike]
Courriel [email=nobody@nobody.org]Nom[/email] Lien [url=http://www.website.com]Texte[/url] Ancre [anchor]Nom[/anchor] Image [img]http://www.website.com/image.jpg[/img] Insérer une image en provenance du site
Aligné à gauche [align=left]Texte[/align] Centré [align=center]Texte[/align] Aligné à droite [align=right]Texte[/align] Toute la largeur [align=justify]Texte[/text]
Couleur [color=#000000]Text[/color] Mise en forme [highlight=pascal]Texte[/highlight] Widgets Emoticons :code: [:code] Convertisseur HTML vers BBCode Convertisseur Word vers BBCode
Prévisualisation Vérification de l'orthographe

Copier Coller Couper Tout sélectionner
Tout effacer Insérer la date Insérer l'heure Insérer la date et heure Insérer votre IP
Liste [list=square][item]BlaBla[/item][/list] Liste Numérotée [list=decimal][item]BlaBla[/item][/list]
Citation [quote=name]Texte[/quote] Spoiler [spoiler]James est le meurtrier![/spoiler]
Tout en majuscules [uppercase]Texte[/uppercase] Tout en minuscules [lowercase]Texte[/lowercase] l33t [l33t]Je suis un nerd[/l33t] Texte en indice [sub]Texte[/sub] Texte en exposant [sup]Texte[/sup] Taille du texte [size=8]Texte[/size]
 
blietaer
Non seulement ta solution est séduisante mais aussi flexible, compacte et puissante.

Certains de ces compliments sont sans doute (aussi) à attribuer au langage, mais merci pour ton temps et tes recherches.
philfr
Mets le path complet (pas relatif) vers to script.

Ou bien, pour ne pas avoir besoin de parser.sh:

output = subprocess.Popen(["/bin/csh", "-c", "source $1 ; setenv", "/home/bli/s2k.env"], stdout=subprocess.PIPE).communicate() [0]

Avec toujours le path complet vers l'exécutable...
blietaer
Du tout, c'est une solution super classe en théorie.

Je dois encore juste peaufiner, je me tape tjrs la même erreur avec subprocess...

Python 2.6.2 (r262:71600, Jun 17 2010, 13:37:18)
[GCC 4.4.1 [gcc-4_4-branch revision 150839]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> output = subprocess.Popen(["./parser.sh", "/home/bli/s2k.env"], stdout=subprocess.PIPE).communicate() [0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/subprocess.py", line 605, in __init__
errread, errwrite)
File "/usr/lib/python2.6/subprocess.py", line 1102, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
>>>

Inutile de préciser que les deux fichiers en question existent bien...

philfr



Ton PC a explosé ? :grin:
blietaer
BORDEL?!
philfr
Pour parser du csh, rien ne vaut csh.

parse.csh:

#!/bin/csh
source $1
printenv


Si tu exécutes "parse.csh .my.env", le stdout te crache tout l'environnement modifié par le .my.env.

Y'a plus qu'à lancer ça depuis python et récupérer le stdout:

output= subprocess.Popen(["/home/philfr/parse.csh","my.env"], stdout=subprocess.PIPE).communicate()[0]
for line in output.split('\n'):
print line
blietaer

En sachant qu'on est en csh et qu'une solution non-acceptable serait de retourner la vapeur et de commencer par sourcer le .my.env et puis lancer le *py.

:sweat:

Cela dit si toi-même tu en arrives à me proposer cela, je me situe mieux par rapport à mon problème. Donc merci beaucoup pour ton temps (quand-même!)
philfr
Sinon, tu wrappes ton script python dans un script csh...


#!/bin/csh
source .my.env
python tonscript.py
blietaer
Ces fichiers ne m'appartiennent pas, je suis dans un environement client.
Et ils ne sont pas loadé quand moi je lance mon python, mais lorsque l'utilisateur les loadera, ce sera bien depuis csh. Il ne m'appartient donc pas d'en changer le format.
Le fichier à lire est bien du CSH donc.

Maintenant, je pense que le plus simple serait de repérer la/les ligne(s) qui me botte dans ces fichiers et d'en faire une évaluation par un echo dans un appel system CSH, mais:
- j'aurais voulu éviter du parsing de fichier
- si justement la valeur à évaluer contient d'autres valeurs de variables de ce même fichier, je vais passer à côté.

grrr.... :angry:

Kim: Très exactement ma question:
http://www.linuxquestions.org/questions/programming-9/source-bash-variables-into-python-environ-551956/
(et donc très exactement la réponse que je ne voulais pas entendre...)
philfr
Si je comprends bien, tu veux lire un fichier de configuration "programmable" pour utiliser le résultat quelque part dans ton programme python.
Et tu veux qu'il soit en csh, mais tu ne veux pas le sourcer depuis csh...

Autre tentative: tu écris ton fichier de config en python ? Et tu peux y utiliser les variables d'environnement existantes ? Et tu peux l'évaluer depuis python.
Catégorie:  






Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?