Возникла проблема с boto3 при загрузке файла в корзину s3 - PullRequest
0 голосов
/ 03 июня 2019

Я сделал простой скрипт, в котором я загружаю файл в корзину s3. И мой код выглядит следующим образом.

bucket = "my-bucket"
file_name = "/my-file-path/download.jpeg"
key_name = None
s3 = boto3.client("s3")

if key_name is None:
    key_name = file_name.split('/')[-1]
s3.upload_file(file_name, bucket, key_name)

Итак, я хочу добиться, чтобы кто-нибудь не передавал имя ключа или имя ключа None, тогда имя файла становится именем ключа и загружается в корзину s3.

Приведенный выше код работает нормально, если я передаю имя ключа, но когда я передаю None в имени ключа, он не будет работать, и я отлаживаю свой код, и я нашел это

-> key_name = file_name.split('/')[-1]
(Pdb) key_name
'download.jpeg'
(Pdb) next
--Call--
> /usr/lib/python3.6/threading.py(1279)_shutdown()
-> def _shutdown():
(Pdb) 
> /usr/lib/python3.6/threading.py(1285)_shutdown()
-> tlock = _main_thread._tstate_lock

И в конце файл не загрузится на s3. Если у кого-то есть идеи по этому поводу, пожалуйста, помогите. Ваша помощь будет оценена наверняка.

1 Ответ

2 голосов
/ 03 июня 2019

Я бы поместил это в функцию и проверил. Например:

def upload(file_name, bucket="my-bucket",key_name=None):
    if not key_name:
        key_name = file_name.split('/')[-1]
    s3 = boto3.client("s3")
    s3.upload_file(file_name, bucket, key_name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...