Search the Community
Showing results for tags 'python'.
-
Удаление файла на сервере в заданное время, когда сервер выключен, требует установки задачи на удаление файла на сервере до его выключения. Это может быть достигнуто с помощью использования операционной системы для установки задачи планировщика на удаление файла в заданное время. Вот пример кода на C++, который позволяет установить задачу планировщика на удаление файла в заданное время: #include <iostream> #include <windows.h> #include <taskschd.h> #pragma comment(lib, "taskschd.lib") #pragma comment(lib, "comsupp.lib") using namespace std; int main() { // Определить время, когда нужно удалить файл (в данном примере - 21 марта 2023 года, 9:00 утра) SYSTEMTIME st = { 2023, 3, 0, 21, 9, 0, 0, 0 }; FILETIME ft; SystemTimeToFileTime(&st, &ft); // Получить указатель на планировщик задач ITaskService* pService = nullptr; CoInitialize(nullptr); HRESULT hr = CoCreateInstance(CLSID_TaskScheduler, nullptr, CLSCTX_INPROC_SERVER, IID_ITaskService, (void**)&pService); if (FAILED(hr)) { cout << "Ошибка создания экземпляра планировщика задач: " << hr << endl; return 1; } // Войти в планировщик задач с помощью учетных данных администратора hr = pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t()); if (FAILED(hr)) { cout << "Не удалось подключиться к планировщику задач: " << hr << endl; pService->Release(); CoUninitialize(); return 1; } // Создать экземпляр планировщика задач ITaskFolder* pRootFolder = nullptr; hr = pService->GetFolder(_bstr_t("\\"), &pRootFolder); if (FAILED(hr)) { cout << "Ошибка получения корневого каталога планировщика задач: " << hr << endl; pService->Release(); CoUninitialize(); return 1; } // Создать новую задачу планировщика ITaskDefinition* pTask = nullptr; hr = pService->NewTask(0, &pTask); if (FAILED(hr)) { cout << "Ошибка создания новой задачи планировщика задач: " << hr << endl; pRootFolder->Release(); pService->Release(); CoUninitialize(); return 1; } // Установить параметры задачи планировщика pTask->put_Principal(_bstr_t(L"")); IActionCollection* pActionCollection = nullptr; hr = pTask->get_Actions(&pActionCollection); if (FAILED(hr)) { cout << "Ошибка получения коллекции действий задачи плани В Python можно использовать модуль win32com.client, чтобы работать с планировщиком задач Windows. Вот пример кода на Python, который устанавливает задачу планировщика на удаление файла в заданное время: import win32com.client import pythoncom def delete_file_task(): # Определить время, когда нужно удалить файл (в данном примере - 21 марта 2023 года, 9:00 утра) delete_time = "2023-03-21T09:00:00" # Получить указатель на планировщик задач scheduler = win32com.client.Dispatch("Schedule.Service") scheduler.Connect() # Создать экземпляр планировщика задач root_folder = scheduler.GetFolder("\\") # Создать новую задачу планировщика task = scheduler.NewTask(0) # Установить параметры задачи планировщика task.RegistrationInfo.Description = "Удаление файла" task.Settings.Enabled = True task.Settings.AllowDemandStart = True task.Settings.StopIfGoingOnBatteries = False task.Settings.DisallowStartIfOnBatteries = False task.Settings.StartWhenAvailable = True # Установить действие для задачи планировщика action = task.Actions.Create(win32com.client.constants.task_action_exec) action.ID = "DeleteFileAction" action.Path = "cmd.exe" action.Arguments = "/c del C:\\path\\to\\file.txt" action.WorkingDirectory = "C:\\path\\to" # Установить триггер для задачи планировщика trigger = task.Triggers.Create(win32com.client.constants.task_trigger_time) trigger.StartBoundary = delete_time # Зарегистрировать задачу планировщика root_folder.RegisterTaskDefinition("DeleteFileTask", task) if __name__ == "__main__": pythoncom.CoInitialize() delete_file_task() pythoncom.CoUninitialize() Обратите внимание, что для работы с модулем win32com.client необходимо установить пакет pywin32.
-
Для того, чтобы отчистить файл от кода в заданное время с помощью языка программирования Python, вам понадобится использовать модуль datetime для определения текущего времени и модуль os для работы с файлами. Вот пример кода, который отчистит файл "example.txt" от кода, если текущее время находится в диапазоне между 9:00 утра и 5:00 вечера: import os import datetime # Определить текущее время now = datetime.datetime.now().time() # Установить время начала и конца диапазона, в котором файл будет отчищен от кода start_time = datetime.time(hour=9) end_time = datetime.time(hour=17) # Если текущее время находится в диапазоне между start_time и end_time if start_time <= now <= end_time: # Открыть файл для чтения и записи with open("example.txt", "r+") as file: # Прочитать содержимое файла content = file.read() # Удалить все строки, содержащие символ # (код) new_content = "\n".join([line for line in content.split("\n") if "#" not in line]) # Установить указатель файла в начало file.seek(0) # Записать новое содержимое в файл file.write(new_content) # Отрезать остаток файла file.truncate() В этом примере кода мы определяем текущее время с помощью datetime.datetime.now().time() и устанавливаем время начала и конца диапазона, в котором файл будет отчищен от кода, с помощью datetime.time(hour=9) и datetime.time(hour=17). Затем мы открываем файл для чтения и записи с помощью with open("example.txt", "r+") as file: и читаем его содержимое с помощью content = file.read(). Затем мы удаляем все строки, содержащие символ "#" (код), с помощью new_content = "\n".join([line for line in content.split("\n") if "#" not in line]). Затем мы устанавливаем указатель файла в начало с помощью file.seek(0) и записываем новое содержимое в файл с помощью file.write(new_content). Наконец, мы отрезаем остаток файла с помощью file.truncate().