【问题标题】:Python: Executing the windows command in windows command prompt from python scriptPython:从python脚本在windows命令提示符下执行windows命令
【发布时间】:2014-05-04 07:57:30
【问题描述】:

我必须在 windows 命令提示符下执行 python 脚本

我是用下面的命令运行命令,让脚本打开命令提示符执行它

os.system("start /wait cmd /c {c:\\python27\\python.exe C:\\examples\\xml2html.py --dir c:\\Temp\\abcd c:\\tmp\\results.xml}")

我期待在该位置创建一个名为“abcd”的新目录,并在其中创建一些输出文件。

当我在 Windows 命令提示符下正常运行此命令时,它可以工作。我无法在脚本中执行此操作。 Windows 命令提示符会快速打开和终止。

谁能告诉我这个命令到底哪里出错了?

【问题讨论】:

  • 应该没问题。您是否检查过abcd 目录是否已创建?
  • 花括号有什么用?刚刚在 Windows 提示符cmd.exe /c echo foo 中尝试正确输出foo。但是cmd.exe /c { echo foo } 给出了一个错误(在 Vista 框中)。
  • @sshashank124 我已经检查了那个目录,它没有创建一个
  • @SergeBallesta 我在花括号中给出完整的命令stackoverflow.com/questions/11615455/…
  • @srp ;恐怕ref'ed post中的花括号只是一个印刷装饰。您应该尝试删除它们。顺便问一下,你真的需要这么多口译员吗?你能不能只导入第二个脚本并直接调用 python 函数?

标签: python python-2.7 python-3.x command-prompt


【解决方案1】:

除非你想打开一个 new 控制台窗口,否则你不需要运行 cmd.exe (%COMSPEC%) 来运行另一个 Python 脚本作为子进程:

import sys
from subprocess import check_call

check_call([sys.executable, "C:\\examples\\xml2html.py",
            "--dir", "c:\\Temp\\abcd", "c:\\tmp\\results.xml"])

【讨论】:

  • 谢谢塞巴斯蒂安。我不需要打开新的控制台窗口。它奏效了。
  • @eryksun:你可以使用cmd打开一个新的控制台窗口,例如,见this answer that opens two new console windows, namely new_window_commandstart是一个shell命令)
  • @eryksun:你是对的:这是模棱两可的。我已经更新了答案。意思是:你不需要shell就可以将Python脚本作为子进程运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多