Utilisation de l'interpréteur Python

Utilisation de l'interpréteur Python - Python - Programmation

Marsh Posté le 22-01-2003 à 13:10:43    

Bonjour;
 
Comment lancer automatiquement l'interpreteur Python pour exécuter des fichiers qui contiennent des commandes et récupérer le resultat dans un fichier output.
 
A+;
 
djamel;


Message édité par yanis97 le 31-01-2003 à 08:43:32
Reply

Marsh Posté le 22-01-2003 à 13:10:43   

Reply

Marsh Posté le 22-01-2003 à 13:12:34    

python fichier.py > output.txt
 
comme pour n'importe quelle commande...
 
sinon tu débute fichier.py par cette ligne :
 
#!/bin/env python
 
et tu le chmod +x
 
./fichier.py > output.txt
 
 
c'est bien ca que tu veux :??:

Reply

Marsh Posté le 22-01-2003 à 13:45:16    

réponse 2 minutes après le post :d
 
lorill > je t'imagine bien devant ton PC à l'affut du topic python mensuel [:rofl]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 22-01-2003 à 13:49:18    

Il faut que ca soit indépendant de la plateforme :
 
> sous le shel (Unix)
Mais ou Windows c'est autre chose.
C'est pour ca que je souhaite faire cette redierction avec une commande python.
Ce que je veux faire : c'est  
1- Lancer l'interpreteur python
2- exécuter des commandes python  
3- Redirigés les sorties (resultats) ds un fichier pour vérifier s'il ya des erreurs.
 
Je souhaite mettre (1), (2), (3) ds un fichier "run" qui fait tout.
 
A+;

Reply

Marsh Posté le 22-01-2003 à 13:54:24    

yanis97 a écrit :


Je souhaite mettre (1), (2), (3) ds un fichier "run" qui fait tout.


 
dans ce cas :
 

Code :
  1. # script run
  2. import sys
  3. fd = file("output.txt", "w+" )
  4. sys.stdout = fd
  5. import leModule
  6. fd.close()


 
pas testé, mais ca devrait passer
 
Harko> C'est un peu ca, oui  :sol:
 
Edit: oublié de précisé le mode d'ecriture


Message édité par lorill le 22-01-2003 à 13:58:07
Reply

Marsh Posté le 22-01-2003 à 14:40:00    

Ca ne marche pas :
 
Exemple :
 
# script run
import sys
 
fd = file("output.txt", "w+" )
sys.stdout = fd
 
from ftplib import FTP
ftp = FTP('fvc175';)
ftp.login()
 
fd.close()
 
Le fichier output.txt est vide et voila c'est que j'ai en sortie :
 
Traceback (most recent call last):
  File "D:\stl_test\VTP\test.py", line 9, in ?
    ftp.login()
  File "C:\Python22\lib\ftplib.py", line 368, in login
    if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd)
  File "C:\Python22\lib\ftplib.py", line 242, in sendcmd
    return self.getresp()
  File "C:\Python22\lib\ftplib.py", line 215, in getresp
    raise error_perm, resp
ftplib.error_perm: 530 Login incorrect.
 
Les résultats ci-dessus sont corrects, mais ils sont pas ds le fichier outpout.txt.
 
A+;

Reply

Marsh Posté le 22-01-2003 à 14:42:30    

forcément, on a redirigé la sortie standard et tu parle d'une erreur...  [:sinclaire]  
 

Code :
  1. # script run
  2. import sys
  3. sys.stdout = file("stdout.txt", "w+" )
  4. sys.stderr = file("stderr.txt", "w+" )
  5. import leModule
  6. fd.close()


Reply

Marsh Posté le 22-01-2003 à 15:15:38    

Le fd.close() est inutile !!!

Reply

Marsh Posté le 22-01-2003 à 15:16:49    

yanis97 a écrit :

Le fd.close() est inutile !!!


il est même faux en fait, erreur de copier coller.
par contre pour faire propre faudrait fermer sys.stdout et sys.stderr même si c'est pas vraiment la peine

Reply

Marsh Posté le 22-01-2003 à 15:40:42    

Au fait ca marche uniquement si j'ai des exceptions, sinon les deux fichiers stderr.txt stdout.txt sont vides.
Par exemple si je fais :
 
# script run
import sys
 
sys.stdout = file("stdout.txt", "wb" )
sys.stderr = file("stderr.txt", "wb" )
 
from ftplib import FTP
ftp = FTP('fvc175';)
ftp.login('stlftp', 'stlftp';)
 
Normalement, je dois avoire ds le fichier de sortie :
 
'230 Bienvenue stlftp sur le STL....'
 
Je ne comprend pas ?
 
A+;

Reply

Marsh Posté le 22-01-2003 à 15:40:42   

Reply

Marsh Posté le 22-01-2003 à 15:43:43    

yanis97 a écrit :


Normalement, je dois avoire ds le fichier de sortie :
 
'230 Bienvenue stlftp sur le STL....'


si tu lances le module sans passer par run, ca s'affiche bien dans la sortie standard ?

Reply

Marsh Posté le 22-01-2003 à 16:00:44    

Oui sur l'interpreteur python ca marche !!!
 
Mais ds le fichier de sortie je n'ai rien ?

Reply

Marsh Posté le 22-01-2003 à 17:01:45    

Si je fais la même chose sous l'interpreteur => ca marche et je remplace les inst 1, 2 et 3 par un simple print 'coucou' => le fichier contient bien coucou ?
 
A+;

Reply

Marsh Posté le 22-01-2003 à 17:02:27    

Les trois instructions :
 
from ftplib import FTP
ftp = FTP('fvc175';)
ftp.login('stlftp', 'stlftp';)

Reply

Marsh Posté le 24-01-2003 à 00:20:20    

Yanis> je sais maintenant ou tu a recuperé ton  
fd = file("output.txt", "w+" )  
sys.stdout = fd  
 
:whistle:  


---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
Reply

Marsh Posté le 24-01-2003 à 08:48:19    

yanis> tu pourrais changer le titre de ton topic stp ? ça fait un peu double emploi avec la sous-cat là...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-01-2003 à 17:42:01    

c'est moche, parce que chez moi ca marche :
 


vincent@laptop:~$ python
Python 2.2.2 (#1, Jan  3 2003, 12:42:27)  
[GCC 2.95.4 20011002 (Debian prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout = file("out.txt", "w+" )
>>> from ftplib import FTP
>>> ftp = FTP("localhost" )
>>> ftp.login('vincent', 'pass')
>>>  
vincent@laptop:~$ cat out.txt  
'230- Linux laptop 2.4.19-686 #1 Mon Nov 18 23:59:03 EST 2002 i686 unknown unknown GNU/Linux\n230- \n230- The programs included with the Debian GNU/Linux system are free software;\n230- the exact distribution terms for each program are described in the\n230- individual files in /usr/share/doc/*/copyright.\n230- \n230- Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent\n230- permitted by applicable law.\n230 User vincent logged in.'


 
t'es sous quelle plateforme ?

Reply

Marsh Posté le 29-01-2003 à 02:02:10    

lorill> c bon, le pb a ete resolu...
 
c juste qu'il fallait penser que quand on est pas dans l'interpreteur, le print n'est plus automatique...


---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
Reply

Marsh Posté le 30-01-2003 à 23:39:35    

euh une remarque, juste comme ça
python tonscript.py > blabla.txt  
 
ça marche aussi sous windows hein  :sarcastic:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 30-01-2003 à 23:40:58    

--greg-- a écrit :

euh une remarque, juste comme ça
python tonscript.py > blabla.txt  
 
ça marche aussi sous windows hein  :sarcastic:  


sauf que son machin stait la sortie d'erreur qu'il voulait rediriger pour son exception.
 
mais python lescript.py 2> toto.log le fait il me semble.
en tout cas sous 2k au boulot ca passe

Reply

Marsh Posté le 31-01-2003 à 08:44:34    

Yanis> puisque tu n'as pas voulu changer le titre de ton topic, je m'en suis chargé...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed