通过Windows任务计划程序安排Python脚本

时间:2012-06-17 17:07:11

标签: python windows-scheduler

观察以下Python脚本“Script.py”:

import subprocess
src_directory = 'Z:\z_7z\Some_Directory'
zip_file_name = 'Test.7z'
cmd = ['7z', 'a', zip_file_name, src_directory, '-mx9']
subprocess.Popen(cmd, stderr = subprocess.STDOUT, stdout = subprocess.PIPE)

我的目的是使用Windows任务计划程序安排Python脚本。我以前使用其他Python脚本成功完成了此操作。但是,我无法通过调度执行上面显示的脚本。我不确定这是Windows任务计划程序问题还是Python问题,但这是我所知道的:

“Script.py”,如上所示,是用于在“Some_Directory”目录上运行7zip压缩的脚本。脚本本身和它正在调用的7z.exe应用程序都存储在“Y:\ z_7z”目录中。

手动执行时,脚本似乎工作正常。我可以双击脚本,它将正确执行。此外,我可以通过以下命令从命令行执行脚本:

Y:\z_7z\Script.py

但是,我无法通过导航到“C:\ Python27”目录并尝试以下操作来手动执行脚本:

python Y:\z_7z\Script.py

这会产生以下错误:

Line 5 in module subprocess.Popen(cmd, stderr = subprocess.STDOUT, ...)
WindowsError: [Error 2] The system cannot find the file specified

提供所有这些信息,我遇到的真正问题是Windows任务计划程序无法执行此脚本(上次运行结果= 0x1)。我尝试了各种Windows任务计划程序配置,包括一个看似理想的配置,如下所示:

  • 程序/脚本:“C:\ Python27 \ python.exe”
  • 添加参数(可选):“Y:\ z_7z \ Script.py”
  • 运行用户是否已登录

同样,我已经安排了其他Python脚本,之前已成功运行。此Windows任务计划程序任务似乎已正确配置。我浏览了一些更高级的设置,并没有发现任何可疑的特定任务。

1 个答案:

答案 0 :(得分:3)

  1. 不要只启动7z。提供可执行文件的完整路径。

    cmd = [r'C:\ Program Files \ 7zip \ 7z.exe','a',zip_file_name,src_directory,' - mx9'] 考虑到C:\Program Files\7zip\7z.exe是可执行路径,可行。

  2. 尝试不以脚本作为参数运行python进程。运行python脚本本身。

  3. 您的zip_file_name是相对的。我不确定参数是文件名。这可能是一条路。在这种情况下,可以在C:\Windows\System32上创建.7z文件。要解决此问题,请将zip_file_name设置为完整路径。