WindowsError: [Error 5] Access is denied using boto/python
WindowsError: [Error 5] Access is denied using boto/python
我要下载存储桶中的所有文件和文件夹。这是我的代码
conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
AWS_ACCESS_KEY_SECRET)
bucket = conn.get_bucket(bucket_name)
key = boto.s3.key.Key(bucket)
key.get_contents_to_filename('path/to/folder')
错误-
File "C:\Python27\lib\site-packages\boto\s3\key.py", line 1726, in get_contents_to_filename
os.remove(filename)
WindowsError: [Error 5] Access is denied: 'path/to/folder'
请帮我解决问题![=12=]
我遇到了这个问题。问题是 S3 Buckets 没有目录。文件结构是扁平的,但每个键都被命名为路径名。
所以如果你有
bucket
|
|__dir1
|
|_file1
|_file2
您实际上将拥有钥匙
bucket/dir1/
bucket/dir1/file1
bucket/dir1/file2
对我来说(在 Windows OS 中),get_contents_to_filename
适用于文件键 (bucket/dir1/file1
) 但不适用于目录键 (bucket/dir1
),这会触发 os.remove(filename)
并最终触发 PermissionError。
相反,您可以尝试递归遍历目录结构,get_contents_to_filename 用于文件键,mkdir 用于目录键(这些以斜杠“/”结尾)。
我在使用 boto3 时遇到了同样的问题。这就是我正在尝试的-
s3.Object('<bucket>','<prefix>/<filename>').download_file('C:\myfolder')
我尝试了多种操作,例如 运行 作为管理员,提供不同的本地路径,提供 public 用户路径等,但没有任何效果。问题是我提供的是 folder 路径,而不是 file 路径。所以这最终奏效了-
s3.Object('<bucket>','<prefix>/<filename>').download_file('C:\myfolder\<filename>')
我要下载存储桶中的所有文件和文件夹。这是我的代码
conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
AWS_ACCESS_KEY_SECRET)
bucket = conn.get_bucket(bucket_name)
key = boto.s3.key.Key(bucket)
key.get_contents_to_filename('path/to/folder')
错误-
File "C:\Python27\lib\site-packages\boto\s3\key.py", line 1726, in get_contents_to_filename
os.remove(filename)
WindowsError: [Error 5] Access is denied: 'path/to/folder'
请帮我解决问题![=12=]
我遇到了这个问题。问题是 S3 Buckets 没有目录。文件结构是扁平的,但每个键都被命名为路径名。
所以如果你有
bucket
|
|__dir1
|
|_file1
|_file2
您实际上将拥有钥匙
bucket/dir1/
bucket/dir1/file1
bucket/dir1/file2
对我来说(在 Windows OS 中),get_contents_to_filename
适用于文件键 (bucket/dir1/file1
) 但不适用于目录键 (bucket/dir1
),这会触发 os.remove(filename)
并最终触发 PermissionError。
相反,您可以尝试递归遍历目录结构,get_contents_to_filename 用于文件键,mkdir 用于目录键(这些以斜杠“/”结尾)。
我在使用 boto3 时遇到了同样的问题。这就是我正在尝试的-
s3.Object('<bucket>','<prefix>/<filename>').download_file('C:\myfolder')
我尝试了多种操作,例如 运行 作为管理员,提供不同的本地路径,提供 public 用户路径等,但没有任何效果。问题是我提供的是 folder 路径,而不是 file 路径。所以这最终奏效了-
s3.Object('<bucket>','<prefix>/<filename>').download_file('C:\myfolder\<filename>')