Vous ne voyez pas de sortie du print
parce que FileInput
redirige vers stdout
au fichier d'entrée lorsque l'argument mot-clé inplace=1
est donnée. Cela entraîne la réécriture du fichier d'entrée et si vous le regardez par la suite, les lignes n'auront plus d'espace à la fin ou au début (à l'exception de la nouvelle ligne à la fin de chaque ligne que la commande print
la déclaration ajoute en retour).
Si vous voulez seulement supprimer les espaces blancs de fin de ligne, vous devriez utiliser rstrip()
au lieu de strip()
. Notez également que le if lines == '': continue
fait en sorte que les lignes vides soient complètement supprimées (sans tenir compte du fait que l'option strip
ou rstrip
est utilisé).
A moins que votre intention ne soit de réécrire le fichier d'entrée, vous devriez probablement juste utiliser for line in open(filename):
. Sinon, vous pouvez voir ce qui est écrit dans le fichier en envoyant simultanément l'écho de la sortie à sys.stderr
en utilisant quelque chose comme ce qui suit (qui fonctionnera à la fois dans Python 2 et 3) :
from __future__ import print_function
import fileinput
import sys
for line in (line.rstrip() for line in
fileinput.FileInput("test.txt", inplace=1)):
if line:
print(line)
print(line, file=sys.stderr)
1 votes
Vous êtes sûr que ce n'est pas lié à l'utilisation de
fileinput.FileInput
à la place ?