import boto3
_BUCKET_NAME = 'Bucket_Name'
_PREFIX = 'data/'
ACCESS_KEY='*********************'
SECRET_KEY='**************************'
client = boto3.client('s3', aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
def ListFiles(client):
"""List files in specific S3 URL"""
response = client.list_objects(Bucket=_BUCKET_NAME, Prefix=_PREFIX)
for content in response.get('Contents', []):
yield content.get('Key')
file_list = ListFiles(client)
for file in file_list:
client.download_file('Bucket_Name',file,'C:/Users/UserName/Desktop/folder/')
回溯(最近通话最近一次):
文件“”,第21行,在 client.download_file('Bucket_Name',file,'C:/ Users / User / Desktop / folder')
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ boto3 \ s3 \ inject.py”,行 172,在download_file中 extra_args = ExtraArgs,callback = Callback)
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ boto3 \ s3 \ transfer.py”, 第307行,在download_file中 future.result()
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ s3transfer \ futures.py”, 第106行,结果 返回self._coordinator.result()
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ s3transfer \ futures.py”, 结果是第265行 提高自我。_例外
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ s3transfer \ tasks.py”,行 126,在致电中 返回self._execute_main(kwargs)
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ s3transfer \ tasks.py”,行 150,在_execute_main中 return_value = self._main(** kwargs)
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ s3transfer \ download.py”, _main中的第603行 osutil.rename_file(fileobj.name,final_filename)
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ s3transfer \ utils.py”,行 271,在rename_file中 重命名文件(当前文件名,新文件名)
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ s3transfer \ compat.py”, 第25行,在rename_file中 os.remove(new_filename)
PermissionError:[WinError 5]访问被拒绝: “ C:/用户/用户/桌面/文件夹”
答案 0 :(得分:0)
您在路径末尾缺少正斜杠。 Python认为这是文件而不是文件夹,并引发错误。替换最后一行
client.download_file('Bucket_Name',file,'C:/Users/UserName/Desktop/folder')
具有:
client.download_file('Bucket_Name',file,'C:/Users/UserName/Desktop/folder/')
答案 1 :(得分:0)
权限错误消息令人误解。 download_file需要目标文件名参数,而不是文件夹
client.download_file('Bucket_Name',object_key,'C:\\temp\\file_name.txt')