2

观察以下 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 任务计划程序任务似乎配置正确。我浏览了一些更高级的设置,并没有发现这个特定任务有任何可疑之处。

4

1 回答 1

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是相对的。我不确定参数是文件名。它可能是一条路径。在这种情况下,可以在 .7z 文件上创建 .7z 文件C:\Windows\System32。要修复它,请设置zip_file_name为完整路径。

于 2012-06-17T17:14:51.147 回答