注 1-所有文件都在我的配置文件中使用 cmd 运行并获取正确的结果。但不是使用 Windows 任务计划程序。
注2-我终于得到了一个线索,即 glob.glob 和 os.listdir 在我的 python 脚本中的 Windows 任务计划程序中不起作用,在该脚本中我正在连接到远程服务器,但它在我的本地使用 cmd 工作和 pycharm。
print("before for loop::", os.path.join(file_path, '*'))
print(glob.glob( os.path.join(file_path, '*') ))
for filename in glob.glob( os.path.join(file_path, '*') ):
print("after for loop")
运行上面的 .py 脚本时,我得到:
before for loop:: c:\users\path\dir\*
在执行 print(glob.glob( os.path.join(file_path, '*') ))
时给出 "[]"
但无法找到原因?**
我通过参考 MagTun 的评论,按照 Stack Overflow 链接为 python 设置 Windows Scheduler:在 Windows 10 中的任务计划程序上安排 .py 文件
目前,我有 scheduler.py,它正在调用另外 4 个 .py 文件。
当我尝试从 Windows 任务调度程序运行 Scheduler.py 时,
它运行 Scheduler.py,然后 1 分钟后运行所有其他 4 个 .py 文件,并在一秒钟内退出。在弹性搜索中没有给出任何输出。
我将其用于 cmd 脚本:
@echo off
cmd /k "cd /d D:\folder\env\Scripts\ & activate & cd /d D:\folder\files & python scheduler.py" >> open.log
timeout /t 15
在上面的 cmd 命令中,当使用 Windows 任务计划程序运行时,它不会在 open.log 中保存任何内容。
具有多个 .py 子进程调度程序的脚本如下:
from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
from subprocess import call
from datetime import datetime
import os
from apscheduler.schedulers.blocking import BlockingScheduler
def a():
call(['python', r'C:\Users\a.py'])
def b():
call(['python', r'C:\Users\b.py'])
def c():
call(['python', r'C:\Users\c.py'])
def d():
call(['python', r'C:\Users\d.py'])
if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_job(a, 'interval', minutes=1)
scheduler.add_job(b, 'interval', minutes=2)
scheduler.add_job(c, 'interval', minutes=1)
scheduler.add_job(d, 'interval', minutes=2)
print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
try:
scheduler.start()
print("$$$$$$$$$$$$$$$$$$")
except (KeyboardInterrupt, SystemExit):
print("****#####")
pass
有同样奇怪的问题。当以用户身份运行时,它就像一个魅力。对于 Windows 任务,全局查询不会返回结果。
编辑:正在通过其映射名称使用网络共享。仅在使用完整 UNC 路径(包括服务器名称)时有效。