Popen()不会重定向任务计划程序任务的输出

时间:2014-08-25 18:55:07

标签: windows python-2.7 popen py2exe

我正在编写一个包装程序来为Windows命令行工具添加功能。该程序使用py2exe在Windows服务器上运行。在其中,有几行看起来像:

job = subprocess.Popen(syncCommand, stdout=myLog, stderr=myLog)

当我从命令行调用此程序时,一切正常,但是,我希望使用Windows任务计划程序自动执行此脚本(根据我的经理的请求)。当我注册可执行文件并尝试将其作为服务运行时,会触及日志,但不会填充通常会返回的对话框。我不确定错误发生在哪里,因为从任务调度程序运行它不会调用终端窗口来查看调试消息。

请注意,在之前的版本中,我调用subprocess.Popen()替换为os.system(),并且一切正常。

这种方法有明显的障碍/问题吗?是否有令人信服的理由使用Popen()代替system()

1 个答案:

答案 0 :(得分:0)

错误是由将任务注册为以其他用户身份运行引起的。该任务已注册为“SYSTEM”用户,但无法访问由Popen()调用访问的远程文件。解决方案是以另一个用户身份运行任务,或者在远程文件所在的机器上以“SYSTEM”用户身份运行它。