如何在Python中使用os.getcwd()正确发送命令到Maya

2 投票
1 回答
724 浏览
提问于 2025-04-16 12:43

我正在使用套接字(sockets)把一些输出发送到Maya软件。不过,从Maya返回的结果让我完全搞不懂。我想给一个变量加上引号,同时又想避免引号被误处理,但一到Maya那里就出问题了。以下是我的代码:

currentDir = os.getcwd()
maya.send('python("import os; import sys; os.chdir(\''+currentDir+'\'); sys.path.append(\''+currentDir+'\'); import pythonExec; pythonExec.main()")')

这是我得到的输出:

python("import os; import sys; os.chdir('C:\Users\pneumonic\Documents\My Dropbox\pythonTesting'); sys.path.append('C:\Users\pneumonic\Documents\My Dropbox\pythonTesting'); import pythonExec; pythonExec.main()");
import os; import sys; os.chdir('C:UserspneumonicDocumentsMy DropboxpythonTesting'); sys.path.append('C:UserspneumonicDocumentsMy DropboxpythonTesting'); import pythonExec; pythonExec.main()
# Error: line 1: [Error 2] The system cannot find the file specified: 'C:UserspneumonicDocumentsMy DropboxpythonTesting'
# Traceback (most recent call last):
#   File "<maya console>", line 1, in <module>
# WindowsError: [Error 2] The system cannot find the file specified: 'C:UserspneumonicDocumentsMy DropboxpythonTesting' #

在路径名称中,每个反斜杠(\)字符都被去掉了。我试过用双引号代替单引号,结果是这样的:

python("import os; import sys; os.chdir("C:\Users\pneumonic\Documents\My Dropbox\pythonTesting"); sys.path.append("C:\Users\pneumonic\Documents\My Dropbox\pythonTesting"); import pythonExec; pythonExec.main()");
// Error: python("import os; import sys; os.chdir("C:\Users\pneumonic\Documents\My Dropbox\pythonTesting"); sys.path.append("C:\Users\pneu€ // 
// Error: Line 1.42: Syntax error // 

我不太确定自己哪里出错了,但显然是我这边的问题。提前谢谢大家的帮助。

顺便说一下,我大部分开发工作是在OSX系统上进行的,那里一切都运行得很好,而且我没有做任何特定于操作系统的事情,所以我很困惑为什么在Windows上会遇到这么多问题。

1 个回答

1

最后发现其实是个很简单的解决办法:

path = os.getcwd()
convertPath = path.replace('\\','/')

不过我不想为这个答案负责。这个答案是我从 http://forums.cgsociety.org/showpost.php?p=6890246&postcount=2 的 r4inm4ker 那里找到的。 :)

撰写回答