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是有幫助的。