【问题标题】:Getting Error (PermissionError: [WinError 5] Access is denied) when Execute below code执行以下代码时出现错误(PermissionError: [WinError 5] Access is denied)
【发布时间】:2019-10-22 14:10:07
【问题描述】:
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/')

Traceback(最近一次调用最后一次):

文件“”,第 21 行,在 client.download_file('Bucket_Name',file,'C:/Users/User/Desktop/folder')

文件 “C:\ProgramData\Anaconda3\lib\site-packages\boto3\s3\inject.py”,行 172,在下载文件中 extra_args=ExtraArgs,回调=回调)

文件 "C:\ProgramData\Anaconda3\lib\site-packages\boto3\s3\transfer.py", 第 307 行,在下载文件中 未来.result()

文件 "C:\ProgramData\Anaconda3\lib\site-packages\s3transfer\futures.py", 第 106 行,结果 返回 self._coordinator.result()

文件 "C:\ProgramData\Anaconda3\lib\site-packages\s3transfer\futures.py", 第 265 行,结果 引发 self._exception

文件 “C:\ProgramData\Anaconda3\lib\site-packages\s3transfer\tasks.py”,行 126,在通话 return 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", 第 603 行,在 _main osutil.rename_file(fileobj.name, final_filename)

文件 “C:\ProgramData\Anaconda3\lib\site-packages\s3transfer\utils.py”,行 271,在重命名文件中 重命名文件(当前文件名,新文件名)

文件 "C:\ProgramData\Anaconda3\lib\site-packages\s3transfer\compat.py", 第 25 行,在 rename_file 中 os.remove(new_filename)

PermissionError: [WinError 5] 访问被拒绝: 'C:/用户/用户/桌面/文件夹'

【问题讨论】:

  • 请格式化您的代码并添加有关您要完成的任务的更多详细信息。
  • 现在。你可以检查

标签: python boto3


【解决方案1】:

权限错误消息具有误导性。 download_file 需要一个目标文件名参数而不是文件夹

client.download_file('Bucket_Name',object_key,'C:\\temp\\file_name.txt')

【讨论】:

    【解决方案2】:

    您的路径末尾缺少正斜杠。 Python 认为它是文件而不是文件夹并抛出错误。替换最后一行

    client.download_file('Bucket_Name',file,'C:/Users/UserName/Desktop/folder')
    

    与:

    client.download_file('Bucket_Name',file,'C:/Users/UserName/Desktop/folder/')
    

    【讨论】:

    • 您确实将“用户名”部分更改为您的实际用户名,对吧?
    猜你喜欢
    • 2021-01-10
    • 2016-07-21
    • 1970-01-01
    • 2021-03-23
    • 2017-08-14
    • 2020-06-20
    • 2022-01-25
    • 2020-07-22
    相关资源
    最近更新 更多