Je crée un programme pour mettre à jour un fichier texte, qui a une liste des villes:
New York City
New York
USA
Newark
New Jersey
USA
Toronto
Ontario
Canada
Si je voulais supprimer les détails pour Newark en utilisant un script bash, je peux le faire:
sed -i "/Newark/,+3d" test.txt
Et cela me laisse avec ce qui suit:
New York City
New York
USA
Toronto
Ontario
Canada
Cependant, je voudrais faire en Python, et je vais avoir des problèmes à trouver comment supprimer les lignes suivantes, après la ligne avec Newark. Je peux supprimer Newark:
with open('test.txt') as oldfile, open('test2.txt', 'w') as newfile:
for line in oldfile:
if not "Newark" in line:
newfile.write(line)
os.remove('test.txt')
os.rename('test2.txt', 'test.txt')
Mais cela ne fait rien pour les deux autres lignes, et crée un nouveau fichier, je dois ensuite utiliser pour remplacer le fichier d'origine.
- Comment puis-je aller sur la fonctionnalité mimant la commande sed avec Python?
- Est-il possible de faire une en édition de fichiers, donc je ne dois pas créer et remplacer le fichier à chaque fois de je dois supprimer de lui?
Avec un compteur? C'est ici:
with open('test.txt') as oldfile, open('test2.txt', 'w') as newfile:
skip = 0
for line in oldfile:
if "Newark" in line:
skip = 3
elif skip > 0:
skip = skip - 1
else:
newfile.write(line)
Éditer:
Je ne répondu à la première question. fileinput édition de fichiers de support, s'il vous plaît jeter un oeil ici: Comment rechercher et remplacer du texte dans un fichier? BTW, je recommanderais également en place , car il ne pirater pas stdout