【发布时间】:2015-12-10 11:18:55
【问题描述】:
大家好,我遇到了以下问题,
我在批处理文件中有以下代码:
..\python-2.7.10.amd64\python.exe ./bin/bla.py ./conf/config.conf > ./logs/output.txt
双击批处理就像一个魅力。接下来我的计划是通过将它添加到 Windows 中的任务调度程序来自动调用这个批处理。于是我把所有的相对路径都改成了绝对路径:
D:\path\to\python-2.7.10.amd64\python.exe D:\path\to\bin\bla.py D:\path\to\conf\config.conf > D:\path\to\logs\output.txt
双击批处理文件仍然有效。
所以我的下一步是将批处理添加到任务调度程序,但是当我从那里运行它时,我收到了以下错误消息:
Traceback (most recent call last): File "D:\path\to\bin\bla.py", line 159, in logging.config.fileConfig(logFile) File "D:\path\to\python-2.7.10.amd64\lib\logging\confi eConfig formatters = _create_formatters(cp) File "D:\path\to\python-2.7.10.amd64\lib\logging\confi reate_formatters flist = cp.get("formatters", "keys") File "D:\path\to\python-2.7.10.amd64\lib\ConfigParser. raise NoSectionError(section) ConfigParser.NoSectionError: No section: 'formatters'
所以由于某种原因,python 脚本无法通过我认为的绝对路径找到 conf 文件,但我不明白为什么。我也用任务调度器中的相对路径试了一下,显然也行不通。
你们有没有人知道为什么它直接从批处理而不是从任务调度程序工作?
【问题讨论】:
-
你把定时任务中的工作目录设置为批处理文件的位置了吗?
-
很难判断,因为我们看不到您的 python 脚本代码。尝试添加脚本并说明如何在任务计划程序中设置任务。这可能是权限问题,因为任务计划程序可以作为系统而不是用户运行。另一件事,尝试添加命令:cd“”,这可能会有所帮助,因为使用任务计划程序运行批处理文件会自动在用户文件夹/系统文件夹(system32文件夹)中启动
-
“D:”有什么特别之处吗?它是网络共享还是 SUBST?环境变量(尤其是 PATH)呢?从 TaskScheduler 运行的程序在不同的会话中运行,并且通常在不同的用户帐户下运行。驱动器号分配可以不同。通常,硬盘驱动器不会有所不同,但网络共享和 SUBST 通常在您的登录会话中是本地的。嗯,既然脚本好像已经开始了,“D”应该够正常了。
标签: python windows python-2.7 batch-file scheduled-tasks