2012-08-29 36 views
2

我在Windows上运行命令时遇到问题,而它在Linux上完美运行。Python:在窗口上执行一个复杂的命令

我给你的上下文,但这是没有必要了解我的问题:我在批处理模式下使用gimp。

我有一个Python脚本callPythonFuScript.py,它调用另一个Python脚本pythonFu.py,它执行python-fu调用。

callPythonFuScript.py中,当我调用pythonFu.py内部的函数来执行时,我构建了命令行。这是命令行:

gimp-console-2.8 -idf --batch-interpreter python-fu-eval -b 'import sys;sys.path=['.']+sys.path;import pythonFu;pythonFu.myFunction("arg1","arg2","arg3") ' -b 'pdb.gimp_quit(1)' 

此命令完美的作品在Linux上,但是当我试图在Windows上运行它,它不工作。

错误消息:

The opening of C:\Users\myRep\sys; failed : no such file or directory 
The opening of C:\Users\myRep\sys.path=['.']+sys.path; failed : no such file or directory 
The opening of C:\Users\myRep\"arg1","arg2","arg3")' failed no such file or directory 

我假设的Windows不同的方式解释字符比Linux。它是否正确?我该如何解决这个问题?

+1

是否更换'''''和''“''在命令行帮助 –

+0

不,它不需要 如果您知道吗?。一些pythonfu -b“执行一个命令 第一个在任何情况下都不起作用,即-b'import sys; sys.path = ['。'] + sys.path; importpythonFu; pythonFu.myFunction(“arg1”,“arg2”,“arg3”)' 但第二个工程,即-b'pdb.gimp_quit(1)' 感谢您的回答 任何其他想法? – user1530966

回答

0

正如在评论中提到,你有什么之间的命令提示符认为作为参数,什么正在为蟒蛇文字字符串传递给eval的逃避问题:

-b 'import sys;sys.path=["."]+sys.path;import pythonFu;pythonFu.myFunction("arg1","arg2","arg3")' 

如果仍然给出了你的错误,这是可能的,你可能需要转义双引号:

-b 'import sys;sys.path=[\".\"]+sys.path;import pythonFu;pythonFu.myFunction(\"arg1\",\"arg2\",\"arg3\")' 
+0

谢谢jdi, 但它仍然无法正常工作,避免python用双引号引起错误是一个很好的解决方案。 但是接着输入正确的字符串ie -b'import sys; sys.path = [“。”] + sys.path; import pythonFu; pythonFu.myFunction(“arg1”,“arg2”,“arg3”)' windows命令行,它将解释与shell不同的双引号。 我认为这是问题,但我不知道如何纠正它。 我认为第一步是正确的,但现在我必须做出河畔由蟒蛇giben字符串深受窗户解释再次 感谢, 胜利者 – user1530966

+0

要弄清楚在你的方式,我会通过黑客蟒蛇启动脚本,只是打印argv标准输出。然后,您可以通过比较输入和脚本输出来玩弄Windows命令行处理。 –