我正在编写一个可以执行批处理文件的脚本,该文件需要先在同一个文件夹中打开一个文件。我目前的代码是:
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
非常感谢有关语法的任何帮助。
答案 0 :(得分:0)
首先,您应该删除&lt;和&gt;代码中的尖括号;只需将文件名(不带任何括号)传递给批处理文件。 (除非你的文件名确实包含&lt;和&gt;字符,在这种情况下我真的想知道你是如何管理它的,因为在Windows中的文件名中禁止使用这些字符。)
其次,您的代码应如下所示:
from subprocess import Popen, PIPE
p = Popen(["Mad8dl.bat", "RUNTHISTOO.txt"], cwd=r"C:\...\test", stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
请注意包含调用组件的列表,而不是单个字符串。另请注意,如果您希望稍后使用communication(),则需要在Popen()调用中指定stdout=PIPE
和stderr=PIPE
。