我正在编写一个包装程序来为Windows命令行工具添加功能。该程序使用py2exe在Windows服务器上运行。在其中,有几行看起来像:
job = subprocess.Popen(syncCommand, stdout=myLog, stderr=myLog)
当我从命令行调用此程序时,一切正常,但是,我希望使用Windows任务计划程序自动执行此脚本(根据我的经理的请求)。当我注册可执行文件并尝试将其作为服务运行时,会触及日志,但不会填充通常会返回的对话框。我不确定错误发生在哪里,因为从任务调度程序运行它不会调用终端窗口来查看调试消息。
请注意,在之前的版本中,我调用subprocess.Popen()
替换为os.system()
,并且一切正常。
这种方法有明显的障碍/问题吗?是否有令人信服的理由使用Popen()
代替system()
?
答案 0 :(得分:0)
错误是由将任务注册为以其他用户身份运行引起的。该任务已注册为“SYSTEM”用户,但无法访问由Popen()调用访问的远程文件。解决方案是以另一个用户身份运行任务,或者在远程文件所在的机器上以“SYSTEM”用户身份运行它。