Récupérer le fichier S3 comme Objet plutôt que de télécharger absolu chemin d'accès système
J'ai juste commencé à l'apprentissage et à l'aide de S3, de lire les docs. Je n'ai vraiment pas trouver quelque chose à aller chercher le fichier dans un objet au lieu de la télécharger à partir de S3? si cela pouvait être possible, ou il me manque quelque chose?
En fait, je veux éviter d'autres IO après avoir téléchargé le fichier.
Ne GetObject (voir docs.aws.amazon.com/AmazonS3/latest/dev/... ) de l'aide?
OriginalL'auteur Bruce_Wayne | 2016-05-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
StringIO
et obtenir un fichier de contenu à partir de S3 à l'aide deget_contents_as_string
, comme ceci:OriginalL'auteur ar-ms
Vous pourriez être à la recherche pour le
get_object()
méthode de la boto3 S3 client:http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.get_object
Ainsi, vous obtenez une réponse de l'objet dictionnaire avec les membres de l'
Body
qui est unStreamingBody
objet, que vous pouvez utiliser comme un fichier normal et appel.read()
méthode. Pour obtenir l'intégralité du contenu de la S3 objet en mémoire que vous feriez quelque chose comme ceci:OriginalL'auteur grepe
Je préfère cette approche, l'équivalent de une réponse précédente:
Mais une autre approche pourrait lire l'objet en
StringIO
:return
ici? Est-ce qu'une fonction? Pouvez-vous s'il vous plaît poster l'ensemble du travail exemple?Salut @Joe, j'ai été en utilisant le
return
mot-clé ici vaguement à indiquer la chose qu'un programmeur veut. J'ai enveloppé les états dans la définition d'une fonction pour la rendre plus claire.Merci. Comment voulez-vous lire PARQUET fichier à partir de S3 dans la variable
string_io
? J'ai essayé le code ci-dessus et d'avoir d'erreur:TypeError: string argument expected, got 'bytes'
.Salut @Joe, Python 3 a
BytesIO
vous pouvez essayer d'utiliser au lieu deStringIO
. Si cela se complique pas, vous pourriez avoir besoin pour poser une nouvelle question.OriginalL'auteur Carl G