0

我有以下代码,它运行带有参数的命令

subprocess.call(["schtasks.exe", "/Query","/V","/FO","csv",">>", r"D:/temp/fo3.csv"])

但是我>>对参数的一部分有问题,该命令似乎不喜欢它,它给出了以下消息

ERROR Invalid argument /option - >>

所以我的问题是我如何让>>论点起作用?

4

2 回答 2

4

当您将参数作为这样的列表传递时,子进程将每个参数传递给程序。可能发生的情况是您的程序 ( schtasks.exe) 正在查看该参数>>,但它不知道如何处理它。当您在 shell 中运行它时,>>shell 会将其解释为重定向,因此您的程序永远不会看到它。

您有 2 个选项,将参数作为字符串传递并使用shell = True. 如果您接受可以修改您传递给子进程的字符串的用户输入,则不建议这样做,因为这会导致程序中的安全风险。

您的第二个选择是将打开的文件对象传递给stdout,例如

f = open(r"D:/temp/fo3.csv",'a')
subprocess.call(["schtasks.exe", "/Query","/V","/FO","csv"], stdout = f)
于 2012-08-29T15:34:35.537 回答
2

输出重定向 (the >>) 是一个 shell 功能,如果您直接调用该程序将不起作用。shell=True在通话中使用。

于 2012-08-29T15:35:00.717 回答