我有以下代码,它运行带有参数的命令
subprocess.call(["schtasks.exe", "/Query","/V","/FO","csv",">>", r"D:/temp/fo3.csv"])
但是我>>
对参数的一部分有问题,该命令似乎不喜欢它,它给出了以下消息
ERROR Invalid argument /option - >>
所以我的问题是我如何让>>
论点起作用?
我有以下代码,它运行带有参数的命令
subprocess.call(["schtasks.exe", "/Query","/V","/FO","csv",">>", r"D:/temp/fo3.csv"])
但是我>>
对参数的一部分有问题,该命令似乎不喜欢它,它给出了以下消息
ERROR Invalid argument /option - >>
所以我的问题是我如何让>>
论点起作用?
当您将参数作为这样的列表传递时,子进程将每个参数传递给程序。可能发生的情况是您的程序 ( 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)
输出重定向 (the >>
) 是一个 shell 功能,如果您直接调用该程序将不起作用。shell=True
在通话中使用。