我正在使用 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/