Python

djamel -  
sebsauvage Messages postés 33415 Statut Modérateur -
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;

4 réponses

tafiscobar Messages postés 1281 Statut Contributeur 177
 
a la prmeire de ton fichier qui comprend tes commandes tu mets ceci :
#!/usr/bin/python
ensuite ds ton interpreter de cdes, tu donnes a ton fichier le droit d'executioon et tu le lances comme ceci :
supposons q le fichier python est fic.py
>chmod +x fic.py
>fic.py > fichier_resulat
##RM:tout ceci suppose q tu sois sous linux, sous win j n sais pas,
tafiscobar
0
sebsauvage Messages postés 33415 Statut Modérateur 15 663
 
Sous Windows ça se fait très bien aussi:
python fic.py > fichier_resultat
0
djamel
 
Il y'a une chose que je ne comprend pas ?
ds le cas des logs, le fichier stdout.txt est vide :

# script run
import sys

sys.stdout = file("stdout.txt", "wb")
sys.stderr = file("stderr.txt", "wb")

from ftplib import FTP (1)
ftp = FTP('fvc175') (2)
ftp.login('stlftp', 'stlftp') (3)

Normalement, je dois avoire ds le fichier de sortie :

'230 Bienvenue stlftp sur le STL....'

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

Je ne comprend pas ?
0
sebsauvage Messages postés 33415 Statut Modérateur 15 663
 
C'est normal ! :-)

ftp.login('stlftp', 'stlftp') renvoie la chaîne '230 Bienvenue...'

Quand tu tape ça dans la console, la console va t'afficher la valeur de retour.
Mais dans ton programme, tu ne fais rien de la valeur de retour.
Il faudrait faire:

print ftp.login('stlftp', 'stlftp')
0
sebsauvage Messages postés 33415 Statut Modérateur 15 663
 
Pour être plus clair, c'est la même chose que:

a = 5
a


Si tu tape ces 2 lignes dans la console, elle va t'afficher 5, car c'est la valeur de retour de a.
Par contre, si tu exécute ceci en tant que fichier .py, rien ne s'affichera. Il faut explicitement afficher a (print a).
0