Python Fichier À Accès Aléatoire
Est-il un Python de type de fichier pour accéder à des lignes au hasard, sans traversant l'ensemble du dossier? J'ai besoin de recherche dans un fichier de grande taille, la lecture de toute la chose en mémoire ne serait pas possible.
Tous les types ou les méthodes seraient appréciés.
Pouvez-vous expliquer pourquoi vous voulez lire une ligne aléatoire, au lieu de lire le fichier en entier dans des parties ou de quelque chose.
Pour faire une recherche binaire dans le fichier, chaque ligne commence par un entier. Je veux traiter les entiers comme des clés et le reste de la ligne comme la valeur.
Pour faire une recherche binaire dans le fichier, chaque ligne commence par un entier. Je veux traiter les entiers comme des clés et le reste de la ligne comme la valeur.
OriginalL'auteur Mantas Vidutis | 2011-02-15
Vous devez vous connecter pour publier un commentaire.
Cela semble être exactement le genre de chose
mmap
a été conçu pour. Unmmap
objet crée une chaîne-comme l'interface dans un fichier:Dans le cas où vous vous le demandiez,
mmap
les objets peuvent également être attribuée à:OriginalL'auteur senderle
Depuis les lignes peuvent être de longueur arbitraire, vous avez vraiment ne pouvez pas obtenir une ligne aléatoire (si tu veux dire "une ligne dont le numéro est réellement aléatoire" ou "une ligne avec un nombre arbitraire, choisie par moi") sans traversant l'ensemble du fichier.
Si kinda-sorta-aléatoire est assez, vous pouvez demander à un endroit aléatoire dans le fichier et le lire avant jusqu'à ce que vous frappez un terminateur de ligne. Mais c'est inutile si vous voulez trouver (dire) numéro de ligne 1234, et les lignes d'échantillonnage non-uniforme si vous voulez vraiment une choisie au hasard à la ligne.
OriginalL'auteur Gareth McCaughan
Vous pouvez utiliser linecache:
OriginalL'auteur David M.
fichier objets ont une méthode de recherche qui peut prendre une valeur particulière de l'octet à l'intérieur du fichier.
Pour voyager à travers les fichiers de grande taille, itérer dessus et vérifier la valeur de chaque ligne. En itérant le fichier objet ne prend pas en charge l'ensemble du contenu du fichier en mémoire.
OriginalL'auteur Senthil Kumaran
Oui, vous pouvez facilement obtenir une ligne aléatoire. Cherchez simplement à une position aléatoire dans le fichier, puis chercher vers le début jusqu'à ce que vous frappez un \n ou au début du fichier, puis lire une ligne.
Code:
Vrai. Aller de l'avant est légèrement plus élevé de performance, mais alors vous devez le wrap-around logique. Je fais la plupart de mon développement sur Unix, où la distinction entre "binaire" et "texte" fichiers n'est pas significatif.
OriginalL'auteur vy32
L'objet de Fichier prend en charge de chercher, mais assurez-vous que vous les ouvrez en tant que binaire, c'est à dire "rb".
Vous pouvez également utiliser le mmap module pour un accès aléatoire, en particulier si les données sont dans un format interne déjà.
OriginalL'auteur Michael Dillon
A fixé des enregistrements de longueur? Si donc, oui, vous pouvez mettre en œuvre une recherche binaire de l'algorithme à l'aide de la recherche.
Sinon, chargez votre fichier dans une base de données SQLlite. Requête qui.
OriginalL'auteur John Machin