0

我正在编写一个可以执行批处理文件的脚本,该脚本需要先在同一文件夹中打开一个文件。我目前的代码是:

from subprocess import Popen
p = Popen("Mad8dl.bat <RUNTHISTO.txt>", cwd=r"C:\...\test")
stdout, stderr = p.communicate()

其中...只是文件夹的路径。但是,每次我运行它时,都会出现语法错误:

The syntax of the command is incorrect

任何有关语法的帮助将不胜感激。

4

1 回答 1

0

首先,您可能应该从代码中删除 < 和 > 尖括号;只需将文件名(不带任何括号)传递给您的批处理文件。(除非您的文件名确实包含 < 和 > 字符,在这种情况下,我真的很想知道您是如何管理它的,因为这些字符在 Windows 的文件名中是被禁止的)。

其次,您的代码应如下所示:

from subprocess import Popen, PIPE
p = Popen(["Mad8dl.bat", "RUNTHISTOO.txt"], cwd=r"C:\...\test", stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()

请注意包含调用组件的列表,而不是单个字符串。另请注意,如果您想稍后使用communicate(),则需要在您的Popen() 调用中指定stdout=PIPEand 。stderr=PIPE

于 2013-04-25T13:18:04.523 回答