欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用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