Python “如何”;泡菜“;在py mel工作?

Python “如何”;泡菜“;在py mel工作?,python,pickle,maya,pymel,Python,Pickle,Maya,Pymel,我试图在Maya上使用python使用pickle存储一些变量,但遇到了一些问题。 显示的错误是: #错误:IOError:文件-maya控制台-第6行:13# 这就是我尝试过的: import maya.cmds as mc import pickle names =["Marcus","Mario","Stefan"] pickle.dump(names, open("names.dat","wb")) 您的代码存在一些问题,主要问题是open命令不知道如何将“names.dat”解析

我试图在Maya上使用python使用pickle存储一些变量,但遇到了一些问题。 显示的错误是:

#错误:IOError:文件-maya控制台-第6行:13#

这就是我尝试过的:

import maya.cmds as mc
import pickle

names =["Marcus","Mario","Stefan"]

pickle.dump(names, open("names.dat","wb"))

您的代码存在一些问题,主要问题是
open
命令不知道如何将
“names.dat”
解析为正确的路径。以下是一些其他问题:

  • 您应该在
    open
    函数中传递完整路径。类似于
    “path/to/my/directory/names.dat”
  • 您使用的是
    “wb”
    ,但这是以二进制形式编写的。问题是你传递的数据不是二进制的!相反,您可以使用
    pickle.dumps(names,True)
    将数据序列化为二进制
  • 实际上,您可以使用
    cPickle
    而不是
    pickle
    。只需将所有内容替换为
    cPickle
    ,它的工作方式应该完全相同。不同之处在于,
    cPickle
    使用C而不是Python进行处理,因此计算速度要快得多
  • 当您创建一个新的
    open
    对象时,您应该通过调用其close方法进行清理。您可以改为将其与
    一起使用,以便在完成后自动关闭
  • 将所有这些放在一起,您应该得到以下结果:

    import cPickle
    
    names = ["Marcus", "Mario", "Stefan"]
    
    with open("path/to/my/directory/names.dat", "wb") as f:
        f.write(cPickle.dumps(names, True))
    

    非常感谢您的解释,现在它运行得很有魅力!很高兴它有帮助!如果你觉得你的问题已经解决了,别忘了接受这个答案。