Pour un exercice que je fais, j'essaie de lire deux fois le contenu d'un fichier donné en utilisant la méthode read()
. Curieusement, quand je l'appelle la deuxième fois, il ne semble pas retourner le contenu du fichier sous forme de chaîne?Pourquoi ne puis-je pas appeler read() deux fois sur un fichier ouvert?
Voici le code
f = f.open()
# get the year
match = re.search(r'Popularity in (\d+)', f.read())
if match:
print match.group(1)
# get all the names
matches = re.findall(r'<td>(\d+)</td><td>(\w+)</td><td>(\w+)</td>', f.read())
if matches:
# matches is always None
Bien sûr, je sais que ce n'est pas le plus efficace ou mieux, ce n'est pas le point ici. Le point est, pourquoi ne puis-je pas appeler read()
deux fois? Dois-je réinitialiser la poignée de fichier? Ou fermer/rouvrir le fichier pour le faire?
Où avez-vous eu l'idée que lire ne changerait pas l'état du fichier? Quelle référence ou tutoriel utilisez-vous? –
Je crois que la fermeture et la réouverture du fichier devraient fonctionner en fonction des réponses ci-dessous. – Anthony
@Shynthriir: Fermer et rouvrir le fichier n'est pas toujours une bonne idée car il peut avoir d'autres effets dans le système (fichiers temporaires, incron, etc.). –