我编写了一个简单的脚本,其中将文件上传到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,那么filename就会成为密钥名称并上传到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上上传。如果有人对此有任何想法,请帮助。您的帮助将不胜感激。
我将其放在函数和测试中。例如:
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句