用python直接修改maya的ma文件时的编码问题
程序员文章站
2022-03-31 19:16:03
...
用python直接修改maya的ma文件时的编码问题
下边脚本是用作修改ma文件的
with open(modifyFile, "r") as maFile:
aLines = maFile.readlines()
bLines = aLines[:]
for num, line in enumerate(aLines):
if line.count('requires'):
break
for oldStr, newStr in modifiedStr.iteritems():
newStr = replaceStrSlash(newStr)
if oldStr in line:
bLines[num] = line.replace(oldStr, newStr)
with open(modifyFile, "w+") as f:
for line in bLines:
f.write(line)
- 用open()打开的文件修改保存之后对比源文件发现文件全部都有修改,这是编码问题
- 解决方法是导入 codecs 模块,使用codecs.open(modifyFile, “r”, “gbk”)第三处填上编码格式gbk
import codecs
with codecs.open(modifyFile, "r", "gbk") as maFile:
aLines = maFile.readlines()
bLines = aLines[:]
for num, line in enumerate(aLines):
if line.count('requires'):
break
for oldStr, newStr in modifiedStr.iteritems():
newStr = replaceStrSlash(newStr)
if oldStr in line:
bLines[num] = line.replace(oldStr, newStr)
with codecs.open(modifyFile, "w+", "gbk") as f:
for line in bLines:
f.write(line)
- maya的默认编码是gbk,用gbk的格式打开ma文件,修改之后再保存就也是gbk的格式
- 再次比较前后两个文件就没问题了
- 在maya的脚本编辑器执行的修改是没问题的,但是用外部的python执行修改就会产生编码问题,这是因为maya对自身的编码格式进行了统一处理所以在maya打开文件默认就是gbk