如何指定下載檔案的目標路徑?
s3 = boto3.resource(..)
my_bucket = s3.Bucket(S3_BUCKET)
# download file into current directory
for s3_object in my_bucket.objects.all():
path, filename = os.path.split(s3_object.key)
my_bucket.download_file(s3_object.key, filename)
uj5u.com熱心網友回復:
在這一行:
my_bucket.download_file(s3_object.key, filename)
該filename引數指定在本地磁盤上保存物件的位置。
Amazon S3 中的Key物件的 可以包含路徑,例如january/invoice.txt. 但是,代碼中的這一行:
path, filename = os.path.split(s3_object.key)
正在從檔案名中分離出路徑,留下path = january/和filename = invoice.txt.
因此,當您的代碼保存物件時,會將它們保存在當前目錄中。
要修改它,您應該在 中指定完整路徑filename,例如:
my_bucket.download_file(s3_object.key, '/tmp/' filename)
當您想要保留目錄結構時,事情會變得更加復雜。例如,可能有多個同名檔案:
january/invoice.txt
february/invoice.txt
現有代碼將用第二個代碼覆寫第一個代碼invoice.txt。如果您希望保留目錄結構,您的代碼不會呼叫os.path.split,而是需要確保每個目標目錄已經存在。
例如,請參閱:使用 Boto3 從 S3 下載檔案夾
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/415542.html
標籤:
