【问题标题】:Python: executing a complex command on windowsPython:在 Windows 上执行复杂的命令
【发布时间】:2012-08-24 09:02:42
【问题描述】:

我在 Windows 上运行命令时遇到问题,而它在 Linux 上运行良好。

我给你上下文,但这不是理解我的问题所必需的:我在批处理模式下使用 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 不同。它是否正确?我该如何解决这个问题?

【问题讨论】:

  • 在您的命令行帮助中用" 替换' 有用吗?
  • 不,它没有。如果你知道一点 pythonfu -b '' 执行一个命令,第一个命令在任何情况下都不起作用,即 -b 'import sys;sys.path=['.']+sys.path;importpythonFu;pythonFu.myFunction( "arg1","arg2","arg3") ' 但第二个有效,即 -b 'pdb.gimp_quit(1)' 感谢您的回答还有其他想法吗?

标签: python windows command-line python-fu


【解决方案1】:

正如 cmets 中所述,您在命令提示符视为参数的内容与作为 python 的文字字符串传递给 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\")'

【讨论】:

  • 感谢jdi,但还是不行,这是避免python使用双引号出错的好方法。但随后将正确的字符串即 -b 'import sys;sys.path=["."]+sys.path;import pythonFu;pythonFu.myFunction("arg1","arg2","arg3")' 提供给 windows命令行,它对双引号的解释与 shell 不同。我假设这是问题,但我不知道如何纠正它。我认为第一步是正确的,但现在我必须确保 python 的字符串 giben 能被 windows 很好地解释,再次感谢 victor
  • 为了解决你的问题,我首先编写了一个 python 脚本,它只将 argv 打印到标准输出。然后,您可以通过比较您的输入和脚本输出来玩转 Windows 命令行处理。
猜你喜欢
  • 2020-01-10
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 2017-08-15
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多