boto3'te, bir nesnenin içeriğini bir dosya tanıtıcısına kopyalarken, get_contents_to_file
eşdeğeri var mı? Ben boto3 bir eşdeğer bulamadıboto3 içinde get_contents_to_file öğesine eşdeğer
from tempfile import TemporaryFile
key = code_that_gets_key()
with TemporaryFile() as tmp_file:
key.get_contents_to_file(key, tmpfile)
: Ben bir S3 nesnesi key
varsa
Boto olarak, beraber geçici bir dosyaya içeriğini kopyalayabilirsiniz.
get_contents_to_filename
kullanımını download_file
ile değiştirebildim. Ancak, bu dosya adını verdiğim durumu kapsar. Bu durumda, dosya tanıtıcısını argüman olarak sunmak istiyorum.
with TemporaryFile() as tmp_file:
body = key.get()['Body']
for chunk in iter(lambda: body.read(4096), b''):
filehandle.write(chunk)
boto3 bunu yapmanın daha iyi bir yolu var mı:
Şu anda, kod aşağıdaki gibi vücut üzerinde yineleme tarafından boto3 çalışmaya alabilirim?
'tmp_file.name' öğesini 'download_file()' konumuna geçiremiyor musunuz? – helloV
@helloV Bu durumda bir dosya ismi olan ['NamedTemporaryFile'] (https://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile) kullanabilirim. Bunun iyi bir fikir olup olmadığından emin değilim, çünkü 'download_file' yöntemi aynı dosya için yeni bir dosya tanıtıcısı açacaktır. Genel olarak, tüm dosya tanıtıcıları dosya adlarına sahip değildir (örneğin, 'StringIO',' TemporaryFile'). – Alasdair
Bu [download_fileobj] (https://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Bucket.download_fileobj) ne için değil mi? –