Maison  >  Article  >  développement back-end  >  exemple python d'utilisation du moyen le plus efficace pour supprimer une certaine ligne dans un fichier volumineux

exemple python d'utilisation du moyen le plus efficace pour supprimer une certaine ligne dans un fichier volumineux

黄舟
黄舟original
2017-08-20 10:49:222683parcourir

L'éditeur ci-dessous vous proposera un article sur la suppression d'une certaine ligne dans un gros fichier en python (la méthode la plus efficace). L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil.

Lorsque vous utilisez Python pour traiter un texte et que vous souhaitez en supprimer une certaine ligne, l'idée conventionnelle est d'abord de lire le fichier dans la mémoire, de le modifier dans la mémoire. puis écrivez-le dans le fichier source.

Mais si vous souhaitez traiter un texte volumineux, tel qu'un texte au niveau Go, cette méthode nécessite non seulement une grande quantité de mémoire, mais prend également du temps pour lire la mémoire en une seule fois, et peut également provoquer un débordement de mémoire.

Nous devons donc utiliser une autre façon de penser pour y faire face.

Nous pouvons utiliser la méthode open() pour ouvrir le fichier qui doit être modifié en deux fichiers, puis les lire dans la mémoire ligne par ligne lorsque la ligne à supprimer est terminée. trouvé, écrasez-le un par un avec les lignes suivantes. Voir le code ci-dessous pour l'implémentation.


with open('file.txt', 'r') as old_file:
  with open('file.txt', 'r+') as new_file:

    current_line = 0

    # 定位到需要删除的行
    while current_line < (del_line - 1):
      old_file.readline()
      current_line += 1

    # 当前光标在被删除行的行首,记录该位置
    seek_point = old_file.tell()

    # 设置光标位置
    new_file.seek(seek_point, 0)

    # 读需要删除的行,光标移到下一行行首
    old_file.readline()
    
    # 被删除行的下一行读给 next_line
    next_line = old_file.readline()

    # 连续覆盖剩余行,后面所有行上移一行
    while next_line:
      new_file.write(next_line)
      next_line = old_file.readline()

    # 写完最后一行后截断文件,因为删除操作,文件整体少了一行,原文件最后一行需要去掉
    new_file.truncate()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn