TypeError,在 Maya 中使用 Python 创建目录
TypeError, making directory with Python in Maya
我正在尝试在 Maya 中使用 Python 创建一个文件夹来保存文件。但是,我收到一个错误,我不确定如何解决。 (在编写脚本方面还不是很有经验)
这是创建目录字符串的代码:
(Maya 正确打印出 DIRECTORY)
# Creates a directory to save the .json file to
USERAPPDIR = cmds.internalVar(userAppDir = True)
DIRECTORY = os.path.join(USERAPPDIR, "gradingManager")
print('Maya application directory: ', DIRECTORY)
创建目录的功能在Maya中用一个按钮控制:
##########################
# Safe data in json file #
##########################
cmds.text(label = "")
cmds.text(label = " Save all results to a .json file for record keeping.",
font = "boldLabelFont")
cmds.button(label = "Save to .json file", command = self.save, width = 600)
实际函数:
def save(self, directory=DIRECTORY, *args):
######################################################################
## This method saves the information gathered above in a .json file ##
######################################################################
# creates a directory
self.createDir(directory)
print("saving things")
def createDir(self, directory=DIRECTORY):
###################################################################
## This function creates a directory for the save functionality. ##
###################################################################
if not os.path.exists(directory):
os.mkdir(directory)
它所指的错误和功能:
# Error: TypeError: file C:\Program Files\Autodesk\Maya2020\bin\python27.zip\genericpath.py line 26: coercing to Unicode: need string or buffer, bool found #
# Does a path exist?
# This is false for dangling symbolic links on systems that support them.
def exists(path):
"""Test whether a path exists. Returns False for broken symbolic links"""
try:
os.stat(path)
except os.error:
return False
return True
我希望这些信息足够了。
我尽可能保持功能干净,所以很明显问题来自检查新目录的路径是否已经存在。
如果您需要更多信息,我很乐意提供。
当您按下按钮时,您期望它会 运行 save(some_path)
或 save()
具有默认值 DIRECTORY
但它不会这样工作。
按钮使用 Maya 作者预定义的一些值执行功能。我不知道在 Maya 中将按钮发送到 save()
的值是什么,但在其他 GUI 中通常它会发送事件信息 - 即。单击了什么小部件,使用了什么鼠标按钮,鼠标位置是什么,等等
所以按钮似乎执行 save(True)
甚至 save(True, other values)
并且这将 True
分配给 def save(self, dictionary, ...)
中的字典,稍后它 运行s createDir(True) and
exists(True)` 并且您收到错误消息。
您应该直接在函数内部使用 DIRECTORY
。
def save(self, *args):
directory = DIRECTORY
# creates a directory
self.createDir(directory)
print("saving things")
如果您有一些小部件来选择目录或手动编写目录,那么您还必须在函数中使用它
def save(self, *args):
directory = some_widget_to_select_folder.get_selected_folder()
if not directory:
directory = DIRECTORY
# creates a directory
self.createDir(directory)
print("saving things")
我正在尝试在 Maya 中使用 Python 创建一个文件夹来保存文件。但是,我收到一个错误,我不确定如何解决。 (在编写脚本方面还不是很有经验)
这是创建目录字符串的代码: (Maya 正确打印出 DIRECTORY)
# Creates a directory to save the .json file to
USERAPPDIR = cmds.internalVar(userAppDir = True)
DIRECTORY = os.path.join(USERAPPDIR, "gradingManager")
print('Maya application directory: ', DIRECTORY)
创建目录的功能在Maya中用一个按钮控制:
##########################
# Safe data in json file #
##########################
cmds.text(label = "")
cmds.text(label = " Save all results to a .json file for record keeping.",
font = "boldLabelFont")
cmds.button(label = "Save to .json file", command = self.save, width = 600)
实际函数:
def save(self, directory=DIRECTORY, *args):
######################################################################
## This method saves the information gathered above in a .json file ##
######################################################################
# creates a directory
self.createDir(directory)
print("saving things")
def createDir(self, directory=DIRECTORY):
###################################################################
## This function creates a directory for the save functionality. ##
###################################################################
if not os.path.exists(directory):
os.mkdir(directory)
它所指的错误和功能:
# Error: TypeError: file C:\Program Files\Autodesk\Maya2020\bin\python27.zip\genericpath.py line 26: coercing to Unicode: need string or buffer, bool found #
# Does a path exist?
# This is false for dangling symbolic links on systems that support them.
def exists(path):
"""Test whether a path exists. Returns False for broken symbolic links"""
try:
os.stat(path)
except os.error:
return False
return True
我希望这些信息足够了。 我尽可能保持功能干净,所以很明显问题来自检查新目录的路径是否已经存在。 如果您需要更多信息,我很乐意提供。
当您按下按钮时,您期望它会 运行 save(some_path)
或 save()
具有默认值 DIRECTORY
但它不会这样工作。
按钮使用 Maya 作者预定义的一些值执行功能。我不知道在 Maya 中将按钮发送到 save()
的值是什么,但在其他 GUI 中通常它会发送事件信息 - 即。单击了什么小部件,使用了什么鼠标按钮,鼠标位置是什么,等等
所以按钮似乎执行 save(True)
甚至 save(True, other values)
并且这将 True
分配给 def save(self, dictionary, ...)
中的字典,稍后它 运行s createDir(True) and
exists(True)` 并且您收到错误消息。
您应该直接在函数内部使用 DIRECTORY
。
def save(self, *args):
directory = DIRECTORY
# creates a directory
self.createDir(directory)
print("saving things")
如果您有一些小部件来选择目录或手动编写目录,那么您还必须在函数中使用它
def save(self, *args):
directory = some_widget_to_select_folder.get_selected_folder()
if not directory:
directory = DIRECTORY
# creates a directory
self.createDir(directory)
print("saving things")