python - 从 S3 存储桶下载 key /文件时出现特殊错误 - [Errno 1] 不允许操作

标签 python amazon-web-services amazon-s3

我正在使用 python 脚本来获取 S3 存储桶中的所有文件。相关代码片段如下:

        print ("Downloading files...")
        for f in files:
            cwd=os.getcwd()
            fname=cwd+"/"
            fname = fname+f.name
            dir = os.path.dirname(fname)
            if not os.path.exists(dir): 
                    print dir
                    os.makedirs(dir)
            try:
                f.get_contents_to_filename(fname)
            except OSError,e:
                print e

当我在用于存储日志文件的存储桶上执行此操作时,我会在该存储桶中的所有文件夹上收到此错误。例如。对于此处的日志文件夹:

Downloading files...
/private/tmp/test/logs
[Errno 1] Operation not permitted: '/private/tmp/test/logs/

尽管出现错误,所有目录和文件都会下载。

为什么会发生这种情况?除了将其他存储桶的日志文件发送到此存储桶之外,任何其他存储桶都不会发生这种情况。还是和代码有关系?或者存储桶的权限。它具有默认权限,我没有更改任何内容。

最佳答案

根据@pavel_form的建议,我解决了问题。我试图将目录写为文件。使用此 block 修复了代码,特别检查基本名称是否为空:

            if (not os.path.basename(fname)==""):
                try:
                    f.get_contents_to_filename(fname)
                except OSError,e:
                    print e

关于python - 从 S3 存储桶下载 key /文件时出现特殊错误 - [Errno 1] 不允许操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27328506/

相关文章:

javascript - 你如何将值从 html 中的迭代对象传递到 Angular2/4 中的组件?

amazon-web-services - 在没有服务器的情况下将文件拉入 S3

python - 不能在 Python Shell 中使用 Tab

python - 超参数调整中的 keras-tuner 错误

amazon-web-services - 使用 AWS CLI 上传到 S3 时如何设置 Content-Type?

amazon-web-services - 您如何通过 AWS API 确定 Redshift 集群的 ARN?

amazon-web-services - 接受使用现有账户加入 AWS Organization

javascript - 异步任务完成时收到通知

python - 我们如何将 csv/xls 文件中两列的数据读入 2 个变量并将它们用于使用 python 的程序

python - 按表示相同值的多个键对字典进行排序