183 votes

Comment supprimer une ligne spécifique dans un fichier ?

Disons que j'ai un fichier texte rempli de surnoms. Comment puis-je supprimer un pseudo spécifique de ce fichier, en utilisant Python ?

1 votes

Essayez fileinput comme décrit par @j-f-sebastian aquí . Il semble vous permettre de travailler ligne par ligne, via un fichier temporaire, le tout avec une simple for la syntaxe.

-2voto

Aram Maliachi Points 151

Pour supprimer une ligne spécifique d'un fichier par son numéro de ligne :

Remplacer les variables nom de fichier y ligne_à_supprimer avec le nom de votre fichier et le numéro de la ligne que vous voulez supprimer.

filename = 'foo.txt'
line_to_delete = 3
initial_line = 1
file_lines = {}

with open(filename) as f:
    content = f.readlines() 

for line in content:
    file_lines[initial_line] = line.strip()
    initial_line += 1

f = open(filename, "w")
for line_number, line_content in file_lines.items():
    if line_number != line_to_delete:
        f.write('{}\n'.format(line_content))

f.close()
print('Deleted line: {}'.format(line_to_delete))

Exemple sortie :

Deleted line: 3

0 votes

Il n'est pas nécessaire de construire un dict, il suffit d'utiliser for nb, line in enumerate(f.readlines())

-4voto

Nikhil Points 104

Prend le contenu du fichier, le divise par newline dans un tuple. Ensuite, accédez au numéro de ligne de votre tuple, joignez votre tuple de résultat, et écrasez dans le fichier.

8 votes

(1) voulez-vous dire tuple(f.read().split('\n')) ? ? (2) "accéder au numéro de ligne de votre tuple" et "joindre votre tuple de résultat" semblent plutôt mystérieux ; du code Python réel pourrait être plus compréhensible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X