在我下面的代碼中,fn2 是本地檔案,“my_bucket_object.key”是我的 s3 存盤桶中的檔案串列。
我正在查看我的本地檔案,按創建日期獲取最新的一個,然后查看存盤桶,我只想復制最新的一個(這是有效的)但如果它已經存在則不行。發生的情況是,即使檔案在存盤桶中,最新的檔案仍會被復制,覆寫存盤桶中的同名檔案。最新檔案的檔案名是“bats6.csv”我認為指定“in”和“not in”條件,這將確保如果已經存在同名檔案,則不會復制該檔案,但這不起作用. 這是代碼。非常感謝。
import boto3
import botocore
import glob, os
import datetime
import os
exchanges = ["bats"]
for ex in exchanges:
csv_file_list = glob.glob(f"H:\SQL_EXPORTS\eod\candles\{ex}\\*.csv")
latest_file = max(csv_file_list, key=os.path.getctime)
path = f'H:\\SQL_EXPORTS\\eod\\candles\\{ex}\\'
fileBaseName = os.path.basename(latest_file).split('.')[0]
fn = path fileBaseName ".csv"
fn2 = fileBaseName ".csv"
print(fn2)
s3 = boto3.resource('s3')
my_bucket = s3.Bucket(f'eod-candles-{ex}')
for my_bucket.object in my_bucket.objects.all():
print(my_bucket.object.key)
if fn2 not in my_bucket.object.key:
#s3.meta.client.upload_file(fn, my_bucket, fn2)
s3.meta.client.upload_file(fn, f'eod-candles-{ex}', fn2)
elif fn2 in my_bucket.object.key:
print("file already exists")

uj5u.com熱心網友回復:
您可以制作一個物件鍵串列,然后檢查它是否存在:
object_keys = [object.key for object in my_bucket.objects.all()]
if fn2 not in object_keys:
s3.meta.client.upload_file(fn, f'eod-candles-{ex}', fn2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/535516.html
