基于* .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写入文件吗?但是,如果可以的话,我正在寻求有关方法的建议?
答案 0 :(得分:0)
您的问题与Blender无关,操作系统阻止基于文件系统权限的文件创建(或可写)。
行-
with open('scene_objects.json', 'w') as json_file:
将在当前working directory中创建一个新文件(或打开现有文件)。在运行Blender时,这可能是多个选项之一,具体取决于您所使用的操作系统。从GUI启动Blender可能还会使您失去有效的CWD或用户没有写权限的临时目录。
您可以使用os.chdir()
将CWD更改为已知存在并且可以写入的CWD。您还可以指定完整路径,而不仅仅是文件名。