我正在使用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/
尽管有错误,但所有目录和文件都已下载。
为什么会这样?除了此桶中发送来自其他存储桶的日志文件之外,它不会发生在任何其他存储桶上。或者它与代码有关?或者对存储桶的权限。它具有默认权限,我没有更改过。
答案 0 :(得分:1)
考虑到@ pavel_form的建议,我发现了问题。我试图将目录写为文件。修复了使用此块的代码,特别是检查basename是否为空:
if (not os.path.basename(fname)==""):
try:
f.get_contents_to_filename(fname)
except OSError,e:
print e