Lire un fichier ligne par ligne, de la S3 en utilisant boto?
J'ai un fichier csv dans S3 et je suis en train de lire l'en-tête de ligne pour obtenir la taille (ces fichiers sont créés par nos utilisateurs afin qu'ils puissent être presque n'importe quelle taille). Est-il un moyen de faire cela en utilisant le nom de boto? J'ai pensé que je pourrais peut-être nous en python BufferedReader, mais je ne peux pas comprendre comment ouvrir un flux à partir d'un S3 clé. Toute suggestion serait génial. Merci!
Serait
key.size
fonctionne pas pour vous? Retourne la taille de la clé en octets. Si vous voulez l'en-tête, vous pouvez également écouter le premier morceau, comme ceci: stackoverflow.com/a/7625197/786559 .OriginalL'auteur gignosko | 2015-02-19
Vous devez vous connecter pour publier un commentaire.
Il semble que boto a un
read()
fonction qui peut faire cela. Voici un code qui fonctionne pour moi:L'appel à
read(n)
retourne le prochain n octets à partir de l'objet.Bien sûr, ce ne sera pas automatiquement de retour "de la ligne d'en-tête", mais vous pourriez l'appeler avec un assez grand nombre de retour de la ligne d'en-tête à un minimum.
Rotenstein - n'avez-vous pas de fermer le fichier après l'avoir lu()?
OriginalL'auteur John Rotenstein
Vous pouvez trouver https://pypi.python.org/pypi/smart_open utile pour votre tâche.
À partir de la documentation:
Merci pour le partage!
Korbakov C'est de me donner une exception TypeError: octets-comme l'objet est nécessaire, ne pas 'str'
Quel est le coût? Ne vous en fin de téléchargement de l'intégralité du fichier que vous venez de lire quelques lignes?
OriginalL'auteur Michael Korbakov
Voici une solution qui transfère les données ligne par ligne:
OriginalL'auteur kooshywoosh
Avec boto3 vous pouvez accéder à une crue de flux et de lire ligne par ligne.
Juste à noter que les flux de données est une propriété privée pour une raison quelconque
OriginalL'auteur robertzp
À l'aide de boto3:
OriginalL'auteur hansaplast
Si vous souhaitez lire plusieurs fichiers (ligne par ligne) avec un compartiment spécifique préfixe (c'est à dire, dans un "sous-dossier") vous pouvez le faire:
Ici les lignes sont octets, donc je suis décodage; mais si elles sont déjà une chaîne, vous pouvez sauter cette.
OriginalL'auteur oneschilling
Les plus dynamiques et à faible coût pour lire le fichier est de lire chaque octet jusqu'à ce que vous trouver le nombre de lignes dont vous avez besoin.
Vous n'aurez pas besoin de deviner la taille de tête si la taille d'en-tête peut changer, vous ne finirez pas de télécharger l'ensemble du dossier, et vous n'avez pas besoin d'outils 3ème partie. Accordé, vous devez vous assurer que la ligne de délimiteur dans votre fichier est correct et que vous lisez le bon nombre d'octets à trouver.
OriginalL'auteur KiteCoder