执行以下代码时出现错误(PermissionError:[WinError 5]访问被拒绝)

时间:2019-06-07 04:38:59

标签: python boto3

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:/用户/用户/桌面/文件夹”

2 个答案:

答案 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')