脚本无法将数据保存到文件

时间:2019-06-21 18:42:38

标签: python blender

基于* .blend文件,我必须编写一个脚本来获取有关对象的信息并将其保存到json。该脚本可以在Blender中打开或运行。启动时应将json文件和数据保存在当前目录中。

所以我创建了这个:

   import bpy
   import json

   objects = bpy.context.scene.objects
   data = {}

   for ob in objects:
       item = {}
       item['location'] = ob.location
       if ob.name == 'Cube':
           item['material_name'] = ob.active_material.name
           data[ob.name] = item
       elif ob.name == 'Camera':
           item['camera_type'] = ob.data.type
           data[ob.name] = item
       elif ob.name == 'Lamp':
           item['lamp_type'] = ob.data.type
           data[ob.name] = item

   with open('scene_objects.json', 'w') as json_file:
       json.dump(data, json_file)

但是,当我在Blender中运行脚本时,出现以下错误:

PermissionError: [Errno 13] Permission denied: 'scene_objects.json'   

我是使用Blender的初学者,所以也许不可能从Blender写入文件吗?但是,如果可以的话,我正在寻求有关方法的建议?

1 个答案:

答案 0 :(得分:0)

您的问题与Blender无关,操作系统阻止基于文件系统权限的文件创建(或可写)。

行-

with open('scene_objects.json', 'w') as json_file:

将在当前working directory中创建一个新文件(或打开现有文件)。在运行Blender时,这可能是多个选项之一,具体取决于您所使用的操作系统。从GUI启动Blender可能还会使您失去有效的CWD或用户没有写权限的临时目录。

您可以使用os.chdir()将CWD更改为已知存在并且可以写入的CWD。您还可以指定完整路径,而不仅仅是文件名。