【问题标题】:`with open...` doesn't work in scheduled task on Windows`with open...` 在 Windows 上的计划任务中不起作用
【发布时间】:2017-09-20 09:56:16
【问题描述】:

我在 Linux 上使用 Python,但我不得不在 Windows 上安排任务。我很难在这里自动化我的脚本。我发现 cron 的最佳替代方法是这个命令

schtasks /Create /SC MINUTE /TN TestTask_Python /TR "C:\Program Files (x86)\Python36-32\python.exe C:\Users\user_name\Desktop\test.py"

它每分钟运行一次脚本,而且它有点工作。 Documentation.

案例 1. 从 IDE 运行。 (PyCharm/Idle) 脚本有效。
案例 2. 从 cmd 运行。 > python test.py 脚本有效。
案例 3. 运行计划任务。该脚本部分工作。

Case3 打印not added 并完成,而Case1 和Case2 打印not added,将datetime 添加到test_time.txt 并打印added

import time
import datetime
import json
from datetime import date

if __name__ == "__main__":

    now = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')

    print('not added')
    time.sleep(2)
    with open('test_time.txt', 'a+') as pf:
        pf.write('{0} \n'.format(now))
        print('added')
        time.sleep(1)
    time.sleep(1)

我仔细检查了我的 enviro 变量,python PATH 与我放入 schtasks cmd 的路径匹配。

我错过了什么吗?为什么with open... 在这种情况下不起作用?

【问题讨论】:

  • 可能您应该使用文件的完整路径
  • 是的,你错过了一些东西。很可能工作目录或工作驱动器不是您所期望的,它试图在其他地方创建 test_time.txt。首先尝试绝对路径名或 os.chdir。
  • 您可能会遇到无法创建文件的异常。按照建议,使用您绝对具有写入权限的位置的完整路径。作为测试,您可以尝试以管理员身份运行该过程,然后查看文件在 Windows 上的位置。

标签: python windows scheduled-tasks


【解决方案1】:

当作为 Windows 任务运行时,该进程具有不同的工作目录。

在调用open()时使用绝对路径

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 2012-09-27
    • 2012-06-05
    • 2011-10-18
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多