Lire les lignes d'un fichier texte, inverser la et de les enregistrer dans un nouveau fichier texte
Pour l'instant j'ai ce code:
f = open("text.txt", "rb")
s = f.read()
f.close()
f = open("newtext.txt", "wb")
f.write(s[::-1])
f.close()
Le texte dans le fichier d'origine est:
This is Line 1
This is Line 2
This is Line 3
This is Line 4
Et quand on renverse et enregistre le nouveau fichier ressemble à ceci:
4 eniL si sihT 3 eniL si sihT 2 eniL si sihT 1 eniL si sihT
Quand je veux qu'elle ressemble à ceci:
This is line 4
This is line 3
This is line 2
This is line 1
Comment puis-je faire cela?
Si vous utilisez Python 2.7, vous ne devez pas fermer manuellement le fichier, utilisez le
with
mot-clé: avec open("text.txt", "rb") comme si: lignes = f.readlines()OriginalL'auteur JaAnTr | 2013-11-03
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur bitoffdev
Vous pouvez faire quelque chose comme:
OriginalL'auteur Saullo G. P. Castro
read()
renvoie l'ensemble du fichier en une chaîne unique. C'est pourquoi, lorsque vous renverse, il renverse les lignes elles-mêmes, et pas seulement de leur ordre. Vous voulez annuler que l'ordre des lignes, vous devez utiliserreadlines()
pour obtenir une liste d'entre eux (en première approximation, il est équivalent às = f.read().split('\n')
):OriginalL'auteur fjarri
Il ya un couple de mesures ici. Nous voulons d'abord obtenir toutes les lignes à partir du premier fichier, et ensuite, nous voulons les écrire dans l'ordre inverse pour le nouveau fichier. Le code est comme suit
Tout d'abord, nous initialisons une variable pour contenir nos lignes. Ensuite, nous avons lu toutes les lignes à partir de la test.txt".
Deuxièmement, nous avons ouvert notre fichier de sortie. Ici, nous bouclons les lignes dans l'ordre inverse, de les écrire dans le fichier de sortie que nous allons.
OriginalL'auteur fallaciousreasoning
La méthode
file.read()
retourne une chaîne de caractères de l'ensemble du dossier, de ne pas les lignes.Et depuis
s
est une chaîne de caractères de l'ensemble du fichier, vous êtes en inversant les lettres, pas les lignes!Tout d'abord, vous aurez à diviser pour lignes:
Ou:
Et votre méthode, c'est déjà correct:
Espérons que cette aide!
OriginalL'auteur aIKid
Un échantillon à l'aide de la liste de sorte qu'il sera beaucoup plus facile:
Je suis sûr qu'il y répondre qui sont plus élégant, mais cette voie est libre pour la comprendre.
OriginalL'auteur Kobi K
Vous avez à travailler ligne par ligne.
C'est parce que vous avez différentes fins de ligne \n. C'est unix standard. Si vous utilisez le bloc-notes comme application pour modifier le fichier de ce qui pourrait arriver. Si vous convertissez \r char \n votre problème sera résolu.
OriginalL'auteur scriptmonster
L'utiliser comme ceci si votre système d'exploitation utilise le
\n
à des lignes de ruptureChose principale ici est
reversed(s.split("\n")).join("\n")
.Il effectue les opérations suivantes:
\n
,array
\n
à unstring
Ici aux états-unis:
line1 \n line2 \n line3
["line1", "line2", "line3"]
["line3", "line2", "line1"]
line3 \n line2 \n line1 \n
OriginalL'auteur Langusten Gustel
Si votre fichier d'entrée est trop grande pour tenir dans la mémoire, voici un moyen efficace de les inverser:
Mise en œuvre:
OriginalL'auteur dux2