J'ai un simple script python qui prend juste un nom de fichier et crache une version modifiée de ce fichier. Je voudrais rediriger stdout (en utilisant '>' de la ligne de commande) afin que je puisse utiliser mon script pour écraser un fichier avec mes modifications, par ex. Lorsque je fais cela, le fichier test.txt résultant ne contient aucun texte du test.txt d'origine - juste les ajouts effectués par myScript.py. Toutefois, si je ne redirige pas stdout, les modifications sont correctement répercutées.Utilisation de la redirection Linux pour remplacer le fichier à partir du script Python
Pour être plus précis, voici un exemple:
myScript.py:
#!/usr/bin/python
import sys
fileName = sys.argv[1]
sys.stderr.write('opening ' + fileName + '\n')
fileHandle = file(fileName)
currFile = fileHandle.read()
fileHandle.close()
sys.stdout.write('MODIFYING\n\n' + currFile + '\n\nMODIFIED!\n')
test.txt
Hello World
Résultat de python myScript.py test.txt > test.txt
:
MODIFYING
MODIFIED!
Correct. Ou une solution alternative. Donnez au script Python un argument à modifier au lieu d'imprimer simplement la sortie. – Wolph
@WoLpH: Je crois que vous avez fait votre commentaire pendant que j'édiquais cette idée même dans la réponse ;-) –
En effet, je l'ai fait. Solution parfaite, mais vous avez déjà eu mon +1;) – Wolph