Да, Питон скрипт может запускаться автоматически в определенное время без использования планировщика задач. Это можно сделать, используя стандартную библиотеку Python
sched
, которая позволяет планировать выполнение функций в определенное время.
Вот пример кода, который запустит функцию
my_function()
каждый день в 10:30 утра:
import sched
import time
import datetime
def my_function():
# ваш код
# создание объекта планировщика
scheduler = sched.scheduler(time.time, time.sleep)
# задание времени выполнения функции
event_time = datetime.datetime.now().replace(hour=10, minute=30, second=0, microsecond=0)
# добавление задания в планировщик
scheduler.enterabs(event_time.timestamp(), 1, my_function, ())
# запуск планировщика
scheduler.run()
Что касается скрытия работы Питон скрипта в диспетчере задач, то это можно сделать, запуская скрипт как службу Windows. Это позволит запускать скрипт в фоновом режиме и скрыть его от пользователей. Есть несколько способов запуска Питон скрипта как службы Windows, но наиболее простой способ - использование модуля
pywin32
. Вот пример кода, который позволит запустить Питон скрипт как службу Windows:
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
class MyService(win32serviceutil.ServiceFramework):
_svc_name_ = 'MyService'
_svc_display_name_ = 'My Service'
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def SvcDoRun(self):
while True:
# ваш код
if win32event.WaitForSingleObject(self.hWaitStop, 5000) == win32event.WAIT_OBJECT_0:
break
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(MyService)