2017-05-25 152 views
0

我想打开一个.blend文件作为Python中的文本,就像在文本编辑器中打开.blend文件一样。但我只能打开它作为二进制打开(混合,“rb”)。读取(),但然后我得到加密文本,它需要非常长的加载。Python:打开.blend文件作为文本

如何获取文本? 。 开放(共混物 “R”)阅读()不工作,因为我得到这个错误:

File "C:\Users\Daniel\AppData\Local\Programs\Python\Python36-32\lib\encodings\cp1252.py", line 23, in decode 
    return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 18726: character maps to <undefined> 

感谢您的帮助!

+1

你不能得到“只是文本”,搅拌机文件**不是文本** –

+0

@NickA我知道,但你可以“打开它作为文本”。就像你会在记事本中打开它一样。 – Frostie

+0

好,如果你想要的文本,你可以在文本模式下打开它,并找到适当的编码读取ot,或在二进制模式下打开并删除非文本字符 –

回答

0

"rb"打开是正确的,“加密文本”是3D模型如何存储在搅拌机中。我不太了解你的动机,因此我不能再进一步。

有关错误的更多信息: 在编码file.read使用中,0x81是一个未定义的字节,因此它在看到该字节时出错。但是,当用"rb"打开时,它只会存储这些值,而不会尝试将它们转换为字符(不完全准确,但有助于理解)。

0

虽然混合文件是一个二进制数据文件,你也会发现它们中的很多也将被压缩。

最简单的方法是让搅拌器读取文件。要使任务自动化,您可以在后台模式下从the CLI开始搅拌器,并使用提取所需信息的blender API运行python脚本。

blender -b --python extractor.py 

如果使用Python来做到这一点,你可以使用subprocess.run()

subprocess.run(['blender', '-b', '--python', 'extractor.py']) 

但是如果你需要做到这一点的机器上没有安装搅拌机,它可以读取从蟒蛇混合文件没有搅拌机,根据你的需要,你可以找到答案herehere是有帮助的。