Python автозапуск скрипта по времени windows

I have two Python scripts on my machine that I want to execute two times a day on specific time period. How do I automate this task? Since I will be away from home and thus my computer for a while, I

In Windows I have come up with two solutions.

First option: Create a .bat file.

Step 1

Create a .bat file to indicate the command you want to run and the script file that will be executed, for instance:

start C:UsersuserXPython.exe C:UsersuserXPycharmProjectsAutomation_taskscreate_workbook.py

Step 2

Open the Task Scheduler and click on the Task Scheduler Library to see the current tasks that are executed. Click on the Create Task option.

Main window Task Scheduler

Step 3

In the General tab, put the name of your new task and click on the option Run whether user is logged on or not, check the option Run with highest privileges and make sure to setup the appropriate version of you OS (in my case I picked Windows 7, Windows Server 2008 R2.

High privileges

Step 4

In the Actions tab, click on the New button and type in the following:

In Program/Scripts you need to look up for the Powershell path that the Task Scheduler will invoke to run the .bat file. In my case, my Powershell path was:
C:WindowsSystem32WindowsPowerShellv1.0powershell.exe

In Add arguments (optional) you need to type the path of the file that will be executed by Powershell. In my case, the path was:

C:UsersuserXDesktoprun_the_bat_file.bat

In Start in (optional) you need to type the path of the file but without the name of the .bat file, that is:

C:UsersuserXDesktop

Configure the settings for Powershell

Step 5

Click on the Triggers tab and select how often you want to execute this task.

Frequency of the task to be executed

Step 6

Lastly, test your task to see if it truly works by selecting it from the Task Scheduler Library and doing click on the Run option.

Test your task

Second option: Run the .py file with the Task Scheduler

Step 1

Open the Task Scheduler and click on the Task Scheduler Library to see the current tasks that are executed. Click on the Create Task option.

Main window Task Scheduler

Step 2

In the General tab, put the name of your new task and click on the option Run whether user is logged on or not, check the option Run with highest privileges and make sure to setup the appropriate version of you OS (in my case I picked Windows 7, Windows Server 2008 R2.

High privileges

Step 3

In the Actions tab, click on the New button and type in the following:

In Program/Scripts you need to look up for the Python.exe path that the Task Scheduler will invoke to run the python script. In my case, my Python.exe path was:
C:UsersuserXpython.exe

In Add arguments (optional) you need to only type the name of your python script. In my case, the path was:

Permissions_dump.py

In Start in (optional) you need to type the path of the file but without the name of the python script, that is:

C:UsersuserXPycharmProjects1099_vendors_costs

Python configuration

Step 4

Click on the Triggers tab and select how often you want to execute this task.

Frequency of the task to be executed

Step 5

Lastly, test your task to see if it truly works by selecting it from the Task Scheduler Library and doing click on the Run option.

Test your task

Another option (in case you convert a .py to a .exe)

If you use the library Cx_Freeze to convert a .py to a .exe and you want to use the task scheduler to automate this task then you need to follow these steps:

Step 1

Click on Create Task and then click on the Actions tab to type in the following:

In Program/Scripts you need to look up for the C:Windowsexplorer.exe path that the Task Scheduler will invoke to run the .exe script.

In Add arguments (optional) you need to only type the name of your .exe file: CustomerPopulation.exe

In Start in (optional) you need to type the path of the file but without the name of the .exe file, that is:

C:UsersuserXPycharmProjectsexecutables

exe parameters

In the General tab, make sure to have selected the Run only when user is logged on and have unchecked the Run with the highest privileges.

If reports stopped working
Make sure to check if your password hasn’t expired, otherwise the reports won’t be sent.

References:

  1. https://gis.stackexchange.com/questions/140110/running-python-script-in-task-scheduler-script-will-not-run?newreg=603bcdbc381b41a283e5d8d0561b835e
  2. https://www.youtube.com/watch?v=oJ4nktysxnE
  3. https://www.youtube.com/watch?v=n2Cr_YRQk7o


  Перевод


  Ссылка на автора

Кредит: Stocksnap

Запускать мои скрипты Python каждый день слишком хлопотно.

Мне нужен способ периодически запускать мои скрипты Python

Представьте, что ваш менеджер просит вас проснуться среди ночи, чтобы запустить сценарий. Это будет ваш самый большой кошмар. Вы просыпаетесь преждевременно, подвергаетесь воздействию ужасного синего света и избегаете приличных снов каждую полночь.

Как любой специалист в области данных, вам может потребоваться запустить несколько сценариев для создания отчетов или развертывания аналитического конвейера. Следовательно, вам нужно узнать опланировщикичтобы не испортить выходные.

Каждый инженер данных и ученый в один момент времени должен выполнять периодические задачи.

По определению, периодические задачи — это задачи, которые выполняются многократно в течение определенного промежутка времени без вмешательства человека или с минимальным вмешательством. В период быстрого развития данных и технологий вам необходимо запускать сценарии для создания резервных копий баз данных, потоковой передачи в Twitter и т. Д.

К счастью, с помощью Task Scheduler вы теперь можете запускать свой скрипт Python для выполнения периодических задач каждый день / неделю / месяц / год в зависимости от ваших потребностей.

В этом уроке вы узнаете, как запустить планировщик задач для веб-данные из Lazada (электронная коммерция) и поместите его в СУБД SQLite База данных.

Это быстрый способ запустить ваш скрипт автоматически!

Запуск веб-скриптинга с помощью планировщика задач и добавление его на диск SQLite

Давайте начнем!

Методы

В этом руководстве мы будем использовать планировщик задач Windows для запуска сценария bat, который будет запускать сценарии Python. Для выполнения этих скриптов у нас есть два простых шага:

  1. Создать исполняемые файлы Python (bat-файл)
  2. Настроить задачу в планировщике задач Windows

Однако, если вы являетесь пользователем Linux и не имеете доступного планировщика задач Windows, вам следует использовать cron планировщики,

Создание исполняемого файла Windows для запуска Python

BAT файлэто DOSпакетный файлиспользуется для выполнения команд с помощью командной строки Windows (cmd.exe). Он содержит ряд команд строки, которые обычно могут вводиться в командной строке DOS.BAT файлычаще всего используются для запуска программ и запуска служебных программ в Windows. — fileinfo.com

Используя bat-файл в качестве нашего исполняемого файла, мы сохраним наш скрипт run в файле, а затем дважды щелкните файл bat, чтобы выполнить команду cmd (командная строка) для запуска скрипта python.

Все, что вам нужно сделать, это создать новый файл bat (например, web-scraping.bat) и написать исполняемый скрипт в формате, Вы можете добавитьПаузакоманда, чтобы избежать закрытия командной строки после выполнения.

C:new_softwarefinanceScriptspython.exe "C:/new_software/Web Scraping/Web-Scraping/Selenium Web Scraping/scraping-lazada.py"
pause

После того, как вы дважды щелкнете по этому файлу bat, Windows откроет вашу командную строку и запустит инструмент веб-поиска. Чтобы запланировать этот двойной щелчок / выполнение, мы подключим наш планировщик задач к файлу bat.

Настроить задачу в планировщике задач Windows

Планировщик задач Windowsявляется приложением Windows по умолчанию для управления задачами в ответ на триггер на основе событий или времени. Например, вы могли бы предложить определенный щелчок и компьютерные действия (такие как перезагрузка) или даже предложить время, каккаждый первый день финансового кварталавыполнить задачу.

В более широком плане эта задача будет содержать сценарий и метаданные, чтобы определить, что и как будет выполняться действие. Вы можете добавить определенный контекст безопасности в аргумент и контролировать, где планировщик будет запускать программу. Windows будет сериализовать все эти задачи как.JOBфайлы в специальной папке под названиемПапка задач,

Поток процессов Task Scheduler для автоматизации работы веб-приложений

В этом руководстве мы собираемся установить событие, основанное на времени, для запуска нашего приложения и вывода данных в SQLite. Всего там

  1. Нажмите Пуск Windows, найдите планировщик задач и откройте его.
  2. Нажмите Create Basic Task в правом окне.
  3. Выберите время запуска.
  4. Укажите точное время для нашего предыдущего выбора.
  5. Запустить программу
  6. Вставьте скрипт вашей программы, где вы сохранили свой bat файл
  7. Нажмите Готово.

Давайте начнем!

  1. Нажмите Пуск Windows, найдите планировщик задач и откройте его.,

Планировщик заданий Windows

2.Нажмите Create Basic Task в правом окне.,

Вы должны указывать имя задачи (например, веб-очистка) и описание (например, веб-очистка и дамп SQLite автоматически каждый день в 18:00)

3.Выберите время срабатывания,

У вас будет возможность выбрать временной триггер ежедневно, еженедельно и даже ежемесячно. Логически этот выбор во многом зависит от того, как часто вы хотите обновить значения из вашего источника данных. Например, если ваша задача — очистить баланс MarketWatch Stocks, вы должны запускать сценарии каждый финансовый квартал.

4.Выберите точное время для нашего предыдущего выбора,

Мы выберем месяц январь, апрель, июль и сентябрь, чтобы указать весь ранний финансовый квартал.

5 Запустить программу

Здесь вы сможете запускать скрипты Python, отправлять электронную почту и даже отображать сообщение. Не стесняйтесь выбирать те, которые вам наиболее удобны. Однако вам следует остерегаться устаревших задач, которые будут удалены в последующих исправлениях.

6.Вставьте скрипт вашей программы, где вы сохранили свой bat файл

Это запустит планировщик задач для вашего скрипта Python для автоматизации. Убедитесь, что вы также включили Пуск в папку вашего приложения, чтобы получить доступ ко всем соответствующим элементам (исполняемые файлы Selenium Browser / диск SQLite)

7.Нажмите Готово,

Вы можете проверить созданное расписание задач на первой странице Планировщика задач.

Поздравляем, вы установили свой первый автоматический планировщик в Windows.

Результат

Вот анимация GIF для ваших ссылок. Обратите внимание, как планировщик сам запускает скрипты Python. Как только сценарии завершатся, он извлечет извлеченное значение из базы данных SQLite. В будущем это приложение будет запускаться каждый раз, когда выполняется условие триггера, и добавлять обновленные значения в SQLite.

Запуск веб-скриптинга с помощью планировщика задач и добавление его на диск SQLite
Данные добавляются в SQLite с помощью планировщика задач

В заключение…

Мальчик смеется, читая книгу, источник: Unsplash

Я действительно надеюсь, что это было отличное чтение и источник вдохновения для вас, чтобы развиваться и вводить новшества.

пожалуйстаКомментарийниже, чтобы предложить и отзывы.

Если вам действительно это нравится, пожалуйста, проверьте мой профиль. Есть больше о статьях Data Analytics и Python Projects, которые будут соответствовать вашим интересам.

Удачного кодирования :)

об авторе

Винсент Татан — энтузиаст данных и технологий, имеющий соответствующий опыт работы в Visa Inc. и Lazada для реализации микросервисных архитектур, бизнес-аналитики и аналитических конвейерных проектов. ,

Винсент — коренной индонезийец, имеющий достижения в решении проблем, а также сильные стороны в разработке полного стека, анализе данных и стратегическом планировании.

Он активно консультирует SMU BI & Analytics Club, руководит начинающими учеными и инженерами в области данных из разных областей и раскрывает свой опыт для бизнеса в разработке своих продуктов.

Пожалуйста, свяжитесь с Винсентом через LinkedIn , средний или YouTube канал

В одной из записей блога я писал как можно автоматизировать выполнение скрипта при помощи cron и linux. Тогда речь шла о WSL (подсистема Linux для Windows). К сожалению с производительностью у WSL пока не все гладко, поэтому пришлось все портировать на Windows.

Сам вопрос запуска скрипта по расписанию в Windows на самом деле очень прост. Нужно лишь создать батник (файл с расширением .bat) прописать в нем все необходимые манипуляции и настроить выполнение данного файла в планировщике. Делается это так:

  • В текстовом редакторе создаете новый файл
  • Добавляете в него ваш код, в моем случае это одна строчка
    C:UsersUser.virtualenvssite-GQljvJBGScriptspython.exe «D:/dev/site/backend/cron.py»
  • Сохраняете файл с расширением .bat, например cron.bat.
  • В планировщике прописываете его выполнение

Особенности запуска Django кода

Если вы пропишите запуск какого нибудь Django скрипта то получите ошибку.

django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings

Данная ошибка говорит о том, что для запуска скрипта нужн о сконфигурировать окружение, погружаться в дебри конфигураций не буду, отмечу лишь вариант решения проблемы.
В начале своего файла добавьте строчки кода

import os
import django<br>os.environ["DJANGO_SETTINGS_MODULE"] = 'project.settings'
django.setup()

Где ‘project.settings’ путь к файлу settings.py вашего Джанго проекта.

Прежде всего необходимо создать файл с расширением bat.
В этом файле написать следующий код:

C:UsersuserPycharmProjectsvenvScriptspython.exe C:UsersuserPycharmProjectsavtozapuskcitaty.py
pause

Где мы сначала указываем путь, где находится python, далее путь к скрипту, который хотим запускать.
Следующая строка — это команда pause — остановка командной строки.
После этого идем в Планировщик заданий, в который можно попасть через Пуск.

В Планировщике заданий наводим мышкой на Библиотеку планировщика и кликаем правой кнопкой мыши, чтобы появилось меню. Там выбираем пункт: Создать простую задачу…

В появившемся окне зададим имя скрипту, а также, если есть желание, описание. После чего кликаем на кнопку Далее.

В следующем окне выберем как часто хотим запускать наш скрипт, в нашем случае выберем ежедневно. И вновь жамкаем на кнопку Далее.

На следующем шаге укажем время, в которое хотим запускать наш python-скрипт.

Выберем какую задачу хотим выполнить, в нашем примере — это Запустить программу.

В следующем окне укажем, расположение созданного нами файл с расширением .bat.

И в последнем окне кликаем на кнопку «Готово!»

На этом все. Если возникнуть сложности или остались вопросы — пишите в комментариях.

In this post, you’ll see the steps to schedule a Python script using the Windows Scheduler.

Step-1: Prepare the Python Script

For example, let’s suppose that the goal is to display ‘Hello World!’ each day at 6am.

Here is the Python script to be used for our example (you may use another Python script based on your needs):

import tkinter as tk 

root= tk.Tk() 
 
canvas1 = tk.Canvas(root, width = 300, height = 300)
canvas1.pack()

label1 = tk.Label(root, text='Hello World!')
canvas1.create_window(150, 150, window=label1)

root.mainloop()

Step-2: Save the Python Script

Once you’re done writing the script, save it as a Python file (where the file extension is .py):

For instance, let’s save the file as hello_world.py under the following path:

C:UsersRonDesktophello_world.py

Step-3: Create Batch File to Run the Python Script

Next, create a batch file to run the Python script.

To start, open Notepad, and then use the following template:

"Path where your Python exe is storedpython.exe" "Path where your Python script is storedscript name.py"
pause

For our example:

  • The path where the Python exe is stored is:
    “C:UsersRonAppDataLocalProgramsPythonPython39python.exe”
  • The Path where the Python script is stored is (see step-2):
    “C:UsersRonDesktophello_world.py”

Here are the paths in the Notepad (you’ll need to adjust those paths to fit your instances):

"C:UsersRonAppDataLocalProgramsPythonPython39python.exe" "C:UsersRonDesktophello_world.py"
pause

Finally, save the Notepad with your file name and the “bat” file extension:

file_name.bat

For example, let’s save the Notepad as:

run_python_script.bat

Once you save the Notepad, a new batch file (called run_python_script) will be created at the specified location:

C:UsersRonDesktoprun_python_script.bat

Step-4: Schedule the Python Script using the Windows Scheduler

In order to schedule the Python script using the Windows Scheduler:

  • Open the Windows Control Panel and then click on the Administrative Tools
  • Double-click on the Task Scheduler, and then choose the option to ‘Create Basic Task…’
  • Type a name for your task (you can also type a description if needed), and then press Next. For instance, let’s name the task as: Run Hello World
  • Choose to start the task ‘Daily‘ since we wish to run the Python script daily at 6am. Also specify the start date and time (6am for our example)
  • Select, Start a program, and then press Next
  • Use the Browse button to find the batch file (run_python_script.bat) that runs the Python script. In our case:

C:UsersRonDesktoprun_python_script.bat

Finally, click on Finish, and you should be good to go. From this point onward, you’ll be greeted with ‘Hello World!’ everyday at 6am.

Однажды мы сделали цикл статей про телеграм-ботов:

  • Как сделать телеграм-бота без программирования
  • Телеграм-бот на Python
  • Запускаем телеграм-бота на сервере

В итоге мы остановились на том, что научились запускать скрипт на сервере, чтобы он работал после разрыва соединения. Но это половинчатое решение: если мы перезапустим сервер, то бот остановится. Иногда сервер перезагружается сам на стороне провайдера, например при плановых технических работах. И тогда наши скрипты умирают. 

Сейчас нам нужно такое решение, чтобы бот автоматически перезапускался при любых обстоятельствах. Этим и займёмся.

Коротко — суть

Чтобы было понятно, что тут происходит, вот короткая версия:

  1. Настраиваем удалённый доступ к серверу.
  2. Создаём папку и заливаем в неё скрипт, который в итоге должен будет работать всё время.
  3. Создаём у себя на компьютере файл службы — он управляет настройками автозапуска скрипта.
  4. Отправляем файл службы на сервер.
  5. Обновляем на сервере данные обо всех службах и запускаем нашу.

Теперь подробно про каждый шаг.

Предварительная работа

Основное, что мы будем использовать, — это удалённый доступ к серверу по SSH. Для этого он должен быть включён на самом сервере, и там же можно сразу посмотреть параметры доступа. Например, для работы нашего учебного сервера мы пользуемся услугами SpaceWeb, где доступ по SSH включается из панели управления:

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Запускаем SSH и проверяем, что соединение устанавливается. Чтобы соединиться, нужно написать в терминале команду ssh имя_пользователя@адрес_сервера, после чего нажать Enter. Сервер спросит пароль, и, если мы его правильно ввели, нас пустят.

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Мы видим приветствие сервера, значит, всё прошло хорошо и мы можем управлять им со своего компьютера. Для этого нужно будет писать в терминал команды и реагировать на то, что тебе ответит сервер.

Отправляем скрипт на сервер

Чтобы не захламлять корневую папку на сервере, создадим новую папку bot. Вот эта команда:

mkdir bot

После этого открываем новую командную строку на компьютере, а не на сервере. Для этого нужно запустить ещё одно окно терминала. Там пишем такое:

scp /Users/mihailpolanin/Downloads/bot.py mpolyanin@77.222.61.9:bot

Вот что это означает:

  • scp — копирование файла по SSH;
  • /Users/mihailpolanin/Downloads/bot.py — это путь к нашему скрипту на компьютере. Его замените на то, что будет у вас;
  •  mpolyanin@77.222.61.9 — адрес сервера и логин пользователя. Это тоже замените на ваши данные;
  • : — отделяет сервер от папки;
  • bot — название папки, которую мы только что создали на сервере.

Лайфхак: чтобы не писать вручную пути до файлов на локальном компьютере, можно перед началом ввода пути просто перетащить файл в окно терминала. Терминал поймёт, что вы имели в виду «путь до этого файла», и подставит данные сам. 

После запуска у нас попросят пароль от сервера — вводим его и видим статистику отправки файла:

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Переключаемся обратно в SSH-соединение и проверяем, что файл скопировался и лежит в папке. Для этого вводим две команды: первая перейдёт в эту папку, а вторая покажет её содержимое:

cd bot

ls

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Внутри нашей папки появился скрипт с ботом, значит, мы всё сделали правильно

Готовим файл для работы службы

Нам нужно, чтобы система сама следила за тем, чтобы скрипт работал всё время и запускался после перезагрузки. В Linux за это отвечают службы — одну из таких служб мы сейчас и сделаем.

Создаём на компьютере новый файл bot.service и вставляем туда такое:

[Unit]
Description=tg-bot
After=multi-user.target

[Service]
User=root
Group=root
Type=simple
Restart=always
ExecStart=/usr/bin/python3 /bot/bot.py

[Install]
WantedBy=multi-user.target

Два самых важных параметра — это путь к нашему скрипту (/bot/bot.py) и название службы: tg-bot. Название может быть любым, а вот путь к скрипту нужно указать точно.

Теперь закидываем этот файл на сервер в папку /usr/lib/systemd/system. Для этого в командной строке компьютера пишем:

scp /Users/mihailpolanin/Downloads/bot.service mpolyanin@77.222.61.9:/usr/lib/systemd/system

Как и раньше, не забудьте заменить адрес до файла .service на вашем компьютере, а также имя пользователя и адрес сервера. Первый адрес можно не писать вручную, а перетащить файл в терминал сразу после набора команды scp.

Запуск службы

Теперь нам нужно перезагрузить все службы, чтобы наш файл тоже попал в общий список для запуска. Открываем SSH-консоль и выполняем там такую команду:

sudo systemctl daemon-reload

И сразу включим наш сервис, чтобы он не отключался при перезагрузке сервера:

sudo systemctl enable bot.service

Всё, можно запускать наш телеграм-бот как службу. Вот основные команды для этого:

  • sudo systemctl start bot.service — запустить службу;
  • sudo systemctl stop bot.service — остановить службу;
  • sudo systemctl status bot.service — посмотреть статус, работает или нет.

Что дальше

В следующий раз сделаем ещё круче — настроим систему мониторинга на сервере, чтобы нам на почту приходило сообщение, когда служба перезапускается или останавливается с ошибкой. Подпишитесь, чтобы не пропустить.

Вёрстка:

Кирилл Климентьев

Содержание

  1. Как выполнить скрипт python по расписанию?
  2. 3 ответов
  3. формат для crontab
  4. 7 ответов
  5. Автоматизируйте свои скрипты Python с помощью планировщика задач
  6. Методы
  7. Создание исполняемого файла Windows для запуска Python
  8. Настроить задачу в планировщике задач Windows
  9. Давайте начнем!
  10. Результат
  11. В заключение…
  12. об авторе
  13. Библиотека schedule – CRON на Python
  14. Celery
  15. Как выполнить скрипт Python по расписанию?
  16. 3 ответа
  17. Формат для crontab

Как выполнить скрипт python по расписанию?

У меня есть два Python scripts на моей машине, которую я хочу выполнить два раза в день в определенный период времени. Как автоматизировать эту задачу? Поскольку я буду вдали от дома и, следовательно, моего компьютера на некоторое время, я хочу загрузить их на сайт и быть выполненным оттуда автоматически без меня.

Как я могу это сделать?

3 ответов

формат для crontab

каждая из секций разделена пробелом, а последняя секция имеет один или несколько пространства в нем. В разделах 1-5 не допускаются пробелы, только между ними. Разделы 1-5 используются для указания времени и частоты выполнения задачи. Вот как выложена работа cron:

минута (0-59), час (0-23, 0 = полночь), день (1-31), месяц (1-12), день недели (0-6, 0 = воскресенье), команда

01 04 1 1 1 /usr/bin/somedirectory/somecommand

приведенный выше пример будет запускать /usr/bin/somedirectory / somecommand в 4:01 утра 1 января плюс каждый понедельник в январе. Звездочка ( * ) можно использовать так, чтобы каждый экземпляр (каждый час, каждый будний день, каждый месяц и т. д.) периода времени используется. Код:

01 04 * * * /usr/bin/somedirectory/somecommand

приведенный выше пример будет запускать /usr/bin/somedirectory / somecommand в 4:01 утра каждый день каждого месяца.

значения, разделенные запятыми, могут использоваться для выполнения более одного экземпляра конкретной команды в течение периода времени. Значения, разделенные черточкой, можно использовать для непрерывного выполнения команды. Код:

01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand

приведенный выше пример будет работать /usr/bin/somedirectory/somecommand в 01 и 31 часов после 4: 00 утра и 5:00 утра с 1 по 15 января каждого года.

текст «/usr/bin/somedirectory/somecommand» в приведенных выше примерах указывает задачу, которая будет выполняться в указанное время. Рекомендуется использовать полный путь к нужной команды, как показано в приведенных выше примерах. Введите который somecommand в терминале найти полную путь к кому-то. Crontab начнет работать, как только он будет правильно отредактирован и сохранен.

вы можете запустить скрипт несколько раз за единицу времени. Например, если вы хотите запускать его каждые 10 минут, используйте следующую запись crontab (выполняется в минутах, делимых на 10: 0, 10, 20, 30, etc.)

Источник

Windows 10 Python 3.5.2

7 ответов

Создание exe должно быть лучшим методом. Но если вы хотите запустить его с помощью планировщика задач, вы можете сделать это следующим образом:

Чтобы гарантировать, что ваш скрипт Python будет работать независимо от учетной записи входа, которую использует задача расписания, и чтобы избежать путаницы в том, какая версия Python используется в смешанных средах (64-разрядной или 32-разрядной), рекомендуется запускать исполняемый файл Python с имя вашего файла Python в качестве аргумента для исполняемого файла.

Предположим, что вы хотите запустить скрипт E: My script.py. Вместо непосредственного запуска сценария, укажите планировщику задач запустить python.exe со сценарием в качестве аргумента. Например:

C: Python27 ArcGIS10.2 python.exe «E: My script.py»

Расположение python.exe зависит от вашей установки. Если вы не знаете, где это, вы можете обнаружить его местоположение; скопируйте и вставьте следующий код в новый скрипт Python, затем выполните скрипт. Сценарий распечатает расположение python.exe, а также другую информацию о вашей среде Python.

После определения местоположения python.exe, это то, что вводится на панели действий планировщика задач:

Если в вашем скрипте есть дополнительные аргументы (параметры), укажите их после пути к вашему скрипту. Надеюсь это поможет.

Я почти потерял свои волосы из-за этого. Я всегда получал 0x1 в результате выполнения описанного выше. Давний опытный администратор Windows сказал мне это:

Создайте командный файл:

Затем укажите пакетный файл в части действия конфигурации задачи. Следует также позаботиться о том, чтобы пользователь, выполняющий сценарий, мог получить доступ ко всем файлам, написанным во время выполнения программы на python.

Я попытался использовать скрипт в качестве параметра и python exe в программе / скрипте. Сначала я получаю сообщение об ошибке «Запланированные задачи Windows не выполняются». Затем после некоторой настройки вокруг я получил ошибку 0x1, которая ничего мне не сказала.

По какой-то причине планировщик задач Windows запускает python.exe в среде, где они терпят неудачу в операторах import-модуля. Мне пришлось использовать обходной путь, используя CMD.exe и передать команду для запуска сценария Python в данной папке.

Затем вкладка параметров:

Не уверен, что является причиной этого. Ранее описанные решения у меня не сработали.

Сценарий, который вы выполняете, будет exe, найденным в вашем каталоге python ex) C: Python27 python.exe

«Аргументом» будет путь к вашему сценарию, например) C: Path To Script.py

Так что думайте об этом так: технически вы не выполняете свой сценарий как запланированное задание. Вы выполняете исполняемый файл root для вашего компьютера с вашим скриптом, который подается в качестве параметра.

Ответ Бисваранджана Найка работает хорошо, пока ваш сценарий не занимает много времени, чтобы закончить.

Я использую немного другой подход в планировщике задач Windows:

В текстовом поле «Программа / скрипт» вы указываете путь к исполняемому файлу Python (в моем случае это папка virtualenv).

«Добавить аргументы» = просто имя вашего скрипта Python.

«Start in» = полный путь вашего скрипта Python (без name.py).

HoyUJ

Таким образом, скрипт запускается, консоль остается открытой и ждет до конца.

Это сработало для меня, вы можете попробовать с панелью действий: Панель действий

Установите флажок «Запускать с наивысшими привилегиями» на вкладке «Общие» и лучше выбрать «Запускать новый экземпляр параллельно» в раскрывающемся меню на вкладке «Настройки».

В конце концов, вы можете установить расписание для задачи на вкладке «Триггеры», чтобы проверить влияние изменений (не забудьте выбрать «Выполнить, вошел ли пользователь в систему или нет» на вкладке «Общие»).

Это абсолютно сработало для меня. Я использую Windows 10 Professional Edition, и мне понадобилось почти 6 месяцев, чтобы получить это решение. Спасибо предложению, сделанному выше.

Источник

Автоматизируйте свои скрипты Python с помощью планировщика задач

Дата публикации Jun 30, 2019

0 693702 189686

Запускать мои скрипты Python каждый день слишком хлопотно.

Мне нужен способ периодически запускать мои скрипты Python

Представьте, что ваш менеджер просит вас проснуться среди ночи, чтобы запустить сценарий. Это будет ваш самый большой кошмар. Вы просыпаетесь преждевременно, подвергаетесь воздействию ужасного синего света и избегаете приличных снов каждую полночь.

Как любой специалист в области данных, вам может потребоваться запустить несколько сценариев для создания отчетов или развертывания аналитического конвейера. Следовательно, вам нужно узнать опланировщикичтобы не испортить выходные.

Каждый инженер данных и ученый в один момент времени должен выполнять периодические задачи.

К счастью, с помощью Task Scheduler вы теперь можете запускать свой скрипт Python для выполнения периодических задач каждый день / неделю / месяц / год в зависимости от ваших потребностей.

В этом уроке вы узнаете, как запустить планировщик задач длявеб-данные из Lazada(электронная коммерция) и поместите его вСУБД SQLiteБаза данных.

Это быстрый способ запустить ваш скрипт автоматически!

0 897693 672117

Методы

В этом руководстве мы будем использовать планировщик задач Windows для запуска сценария bat, который будет запускать сценарии Python. Для выполнения этих скриптов у нас есть два простых шага:

Однако, если вы являетесь пользователем Linux и не имеете доступного планировщика задач Windows, вам следует использоватьcron планировщики,

Создание исполняемого файла Windows для запуска Python

Используя bat-файл в качестве нашего исполняемого файла, мы сохраним наш скрипт run в файле, а затем дважды щелкните файл bat, чтобы выполнить команду cmd (командная строка) для запуска скрипта python.

После того, как вы дважды щелкнете по этому файлу bat, Windows откроет вашу командную строку и запустит инструмент веб-поиска. Чтобы запланировать этот двойной щелчок / выполнение, мы подключим наш планировщик задач к файлу bat.

Настроить задачу в планировщике задач Windows

Планировщик задач Windowsявляется приложением Windows по умолчанию для управления задачами в ответ на триггер на основе событий или времени. Например, вы могли бы предложить определенный щелчок и компьютерные действия (такие как перезагрузка) или даже предложить время, каккаждый первый день финансового кварталавыполнить задачу.

В более широком плане эта задача будет содержать сценарий и метаданные, чтобы определить, что и как будет выполняться действие. Вы можете добавить определенный контекст безопасности в аргумент и контролировать, где планировщик будет запускать программу. Windows будет сериализовать все эти задачи как.JOBфайлы в специальной папке под названиемПапка задач,

0 320976 222841

В этом руководстве мы собираемся установить событие, основанное на времени, для запуска нашего приложения и вывода данных в SQLite. Всего там

Давайте начнем!

0 357932 119832

2.Нажмите Create Basic Task в правом окне.,

Вы должны указывать имя задачи (например, веб-очистка) и описание (например, веб-очистка и дамп SQLite автоматически каждый день в 18:00)

0 643014 42569

3.Выберите время срабатывания,

0 347102 177950

4.Выберите точное время для нашего предыдущего выбора,

Мы выберем месяц январь, апрель, июль и сентябрь, чтобы указать весь ранний финансовый квартал.

0 681078 638891

5 Запустить программу

Здесь вы сможете запускать скрипты Python, отправлять электронную почту и даже отображать сообщение. Не стесняйтесь выбирать те, которые вам наиболее удобны. Однако вам следует остерегаться устаревших задач, которые будут удалены в последующих исправлениях.

0 906469 429985

6.Вставьте скрипт вашей программы, где вы сохранили свой bat файл

Это запустит планировщик задач для вашего скрипта Python для автоматизации. Убедитесь, что вы также включили Пуск в папку вашего приложения, чтобы получить доступ ко всем соответствующим элементам (исполняемые файлы Selenium Browser / диск SQLite)

0 162863 877674

7.Нажмите Готово,

Вы можете проверить созданное расписание задач на первой странице Планировщика задач.

0 556145 531899

Поздравляем, вы установили свой первый автоматический планировщик в Windows.

Результат

Вот анимация GIF для ваших ссылок. Обратите внимание, как планировщик сам запускает скрипты Python. Как только сценарии завершатся, он извлечет извлеченное значение из базы данных SQLite. В будущем это приложение будет запускаться каждый раз, когда выполняется условие триггера, и добавлять обновленные значения в SQLite.

0 897693 672117

0 624356 777450

В заключение…

0 704536 46247

Я действительно надеюсь, что это было отличное чтение и источник вдохновения для вас, чтобы развиваться и вводить новшества.

пожалуйстаКомментарийниже, чтобы предложить и отзывы.

Если вам действительно это нравится, пожалуйста, проверьте мой профиль. Есть больше о статьях Data Analytics и Python Projects, которые будут соответствовать вашим интересам.

об авторе

Он активно консультирует SMU BI & Analytics Club, руководит начинающими учеными и инженерами в области данных из разных областей и раскрывает свой опыт для бизнеса в разработке своих продуктов.

Источник

Библиотека schedule – CRON на Python

Вам приходилось работать с CRON? Это такой сервис в nix-системах, который позволяет регулярно в определенные моменты времени запускать скрипты или программы. Штука с долгой историей, в наследство которой достался странный синтаксис для описания правил:

Что если бы мы хотели иметь свой CRON внутри программы Python, чтобы в нужные моменты времени вызывать функции? Да еще, чтобы у него был человеческий синтаксис? Такая библиотека есть и называется schedule.

Как видите, правила для задания временных интервалов прекрасно читаются, словно они предложения на английском языке. Перевод пары примеров:

В задания можно передавать параметры вот так:

Если по какой-то причине нужно отменить задание, это делается так:

Если нужно отменить группу заданий, то к ним добавляют тэги:

Метод to позволяет задать случайный интервал для выполнения задания, например от 5 до 10 секунд:

Библиотека сама не обрабатывает сама исключения в ваших задачах, поэтому, возможно, понадобится создать подкласс планировщика, как в этом примере. Или декоратор, который будет отменять работу, если произошло исключение. Вот так:

Если задания занимают продолжительное время или должны выполняться параллельно, то вам самостоятельно придется организовать их выполнение в отдельных потоках.

Celery

Если вы используете в проекте Celery, то, вероятно, вам не нужен schedule. В Celery и так есть отличный CRON:

Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈

Источник

Как выполнить скрипт Python по расписанию?

У меня есть два Python scripts на моей машине, которые я хочу выполнять два раза в день в течение определенного периода времени. Как мне автоматизировать эту задачу? Поскольку я на некоторое время буду вдали от дома и, следовательно, от своего компьютера, я хочу загрузить их на сайт и автоматически выполнять без каких-либо действий.

Как я могу это сделать?

3 ответа

Формат для crontab

Каждый из разделов разделен пробелом, а последний раздел содержит один или несколько пробелов. В разделах 1-5 не допускаются пробелы, только между ними. Разделы 1-5 используются, чтобы указать, когда и как часто вы хотите, чтобы задача была выполнена. Вот как устроена работа cron:

Минута (0-59), час (0-23, 0 = полночь), день (1-31), месяц (1-12), день недели (0-6, 0 = воскресенье), команда

01 04 1 1 1 /usr/bin/somedirectory/somecommand

Приведенный выше пример будет запускать / usr / bin / somedirectory / somecommand в 4:01 утра 1 января плюс каждый понедельник января. Можно использовать звездочку (*), чтобы использовать каждый экземпляр (каждый час, каждый будний день, каждый месяц и т. Д.) Периода времени. Код:

01 04 * * * /usr/bin/somedirectory/somecommand

Приведенный выше пример будет запускать / usr / bin / somedirectory / somecommand в 4:01 утра каждый день каждого месяца.

Значения, разделенные запятыми, могут использоваться для запуска более одного экземпляра конкретной команды в течение определенного периода времени. Значения, разделенные дефисом, могут использоваться для непрерывного выполнения команды. Код:

01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand

Приведенный выше пример будет запускаться /usr/bin/somedirectory/somecommand в 01 и 31 часа после 4:00 и 5:00 с 1 по 15 января и июня.

Вы можете запускать скрипт несколько раз за единицу времени. Например, если вы хотите запускать его каждые 10 минут, используйте следующую запись crontab (запускается в минутах, кратных 10: 0, 10, 20, 30 и т. Д.)

Источник

Ychenyi

38 / 39 / 7

Регистрация: 13.11.2020

Сообщений: 678

1

06.03.2021, 16:35. Показов 13321. Ответов 24

Метки нет (Все метки)


У меня есть программа (выводит просто пустое окно), скомпилировал в исполняемый файл с помощью pyinstaller
вот смотрите, предположим сейчас оно открыто, я перезапущу пк и при повторном включении компьютера, нужно будет заново кликать по нему чтобы открыть
а как сделать так, чтобы если оно было активно, то при перезапуске пк, автоматически открывалось?
код в программе такой, если нужно:

Python
1
2
3
4
5
6
7
import tkinter
import time
time.sleep(10)
master = tkinter.Tk()
canvas = tkinter.Canvas(master, bg='blue', height=300, width=600)
canvas.pack()
master.mainloop()

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



4029 / 2972 / 1073

Регистрация: 21.03.2016

Сообщений: 7,498

06.03.2021, 16:43

2

Лучший ответ Сообщение было отмечено Ychenyi как решение

Решение

Цитата
Сообщение от Ychenyi
Посмотреть сообщение

а как сделать так, чтобы если оно было активно

а как оно может быть активно при перезапуске? процесс то будет убит.
как вариант писать программу проверки которую закидываете в автозапуск. при запуске вашего файла создается текстовый файл где пишется допустим 1 и при закрытии вашей проги в файле перезаписывается 0. тогда программа из автозапуска будет проверять этот файл и если там 1 (был убит процесс а не закрыт вами) то тогда запускать вашу прогу. как это реализовать думайте сами.



1



38 / 39 / 7

Регистрация: 13.11.2020

Сообщений: 678

06.03.2021, 16:44

 [ТС]

3

Цитата
Сообщение от Semen-Semenich
Посмотреть сообщение

а как оно может быть активно при перезапуске? процесс то будет убит.

тут я имел ввиду, что если прога активна была ДО перезапуска, то как сделать так, чтобы и после него она включилась самостоятельно



0



4029 / 2972 / 1073

Регистрация: 21.03.2016

Сообщений: 7,498

06.03.2021, 16:48

4

выше описал алгоритм перезапуска



0



38 / 39 / 7

Регистрация: 13.11.2020

Сообщений: 678

06.03.2021, 16:49

 [ТС]

5

Semen-Semenich, а можно ли это сделать в коде как нибудь??
без закидывания в автозапуск?



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

06.03.2021, 16:52

6

Цитата
Сообщение от Ychenyi
Посмотреть сообщение

без закидывания в автозапуск?

Открой для себя реестр windows, где тоже есть автозапуск и туда также можно записывать любые свои данные. Собственно, приложения на windows так и поступают, сохраняя туда все что им нужно для работы.

Ну а если у тебя не windows, то ты и так знаешь как планируют запуск приложения в линуксе (или не знаешь?).



1



38 / 39 / 7

Регистрация: 13.11.2020

Сообщений: 678

06.03.2021, 16:54

 [ТС]

7

Garry Galler, Semen-Semenich, то бишь мне просто нужно файл.exe закинуть туда и он будет каждый раз открываться при запуске ПК или только тогда, когда файл.exe будет убит при перезапуске а не закрыт?



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

06.03.2021, 17:05

8

Цитата
Сообщение от Ychenyi
Посмотреть сообщение

то бишь мне просто нужно файл.exe закинуть туда

Нет Ты должен написать код. Реестр это не папка… и даже не мамка.



0



4029 / 2972 / 1073

Регистрация: 21.03.2016

Сообщений: 7,498

06.03.2021, 17:06

9

Garry Galler, просто прогу в автозапуск ему не катит. я так понял если прога работала и комп перезапустили то и прога должна запуститься а если не работала то и не должна. автозапуск будет ее запускать постоянно.



1



Ychenyi

38 / 39 / 7

Регистрация: 13.11.2020

Сообщений: 678

06.03.2021, 17:45

 [ТС]

10

Garry Galler, код в этом же файле, где и основной код?

Добавлено через 11 секунд

Цитата
Сообщение от Semen-Semenich
Посмотреть сообщение

просто прогу в автозапуск ему не катит. я так понял если прога работала и комп перезапустили то и прога должна запуститься а если не работала то и не должна. автозапуск будет ее запускать постоянно.

все верно

Добавлено через 16 минут

Цитата
Сообщение от Semen-Semenich
Посмотреть сообщение

и при закрытии вашей проги

а как это именно в коде проверить??

Добавлено через 18 минут
Semen-Semenich, Garry Galler,
вообщем , пытаюсь сделать так
вопрос, как написать закрытие файла в

Код

else

?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
import tkinter
file = open("test.txt", "w")
firstLine = file.readline()
if firstLine == 1:
    continue
else:
    
file.write(1)
master = tkinter.Tk()
canvas = tkinter.Canvas(master, bg='blue', height=300, width=600)
file.close()
canvas.pack()
master.mainloop()



0



3678 / 2258 / 490

Регистрация: 07.11.2019

Сообщений: 3,815

06.03.2021, 17:46

11

Лучший ответ Сообщение было отмечено Ychenyi как решение

Решение

Semen-Semenich, такой вариант:
программа стартанула, записала себя в автозапуск, перед «нормальным» завершением работы программы она удалила себя из автозапуска.



1



38 / 39 / 7

Регистрация: 13.11.2020

Сообщений: 678

06.03.2021, 17:48

 [ТС]

12

а хотя, при первом запуске там же пустая строка, и поэтому он даже не откроется
а если проверку сунуть после записи единицы, то при перезапуске пк, сначала единица опять запишется , а потом проверка и будет единица всегда
помогите пожалуйста написать , чтобы работало

Добавлено через 1 минуту
u235, а как сделать так чтобы она себя туда записала и удалила?



0



Garry Galler

Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

06.03.2021, 17:56

13

Цитата
Сообщение от Ychenyi
Посмотреть сообщение

а как сделать так чтобы она себя туда записала и удалила?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import atexit
import time
 
# эта функция будет вызвана только при нормальном завершении процесса
def goodbye(name, adjective):
    # удалить себя из ветки автозапуска
    # здесь какой-то код удаления записи из реестра
    print('Goodbye, %s, it was %s to meet you.' % (name, adjective))
 
# зарегать 
atexit.register(goodbye, 'Donny', 'nice')
 
 
# здесь нужно написать код записи проги в autorun реестра
 
 
# работа программы
while 1:
    time.sleep(2)



2



Semen-Semenich

4029 / 2972 / 1073

Регистрация: 21.03.2016

Сообщений: 7,498

06.03.2021, 17:57

14

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import tkinter
import time
 
def fun(master = None, flag = '0'):
    with open('file_flag.txt','w') as f:
        f.write(flag)
    if flag == '1' and master:
        master.destroy()
        
fun()
 
time.sleep(10)
master = tkinter.Tk()
master.protocol('WM_DELETE_WINDOW', lambda : fun(master, '1'))
canvas = tkinter.Canvas(master, bg='blue', height=300, width=600)
canvas.pack()
master.mainloop()

если окно закрыть крестиком то в файле будет 1 а если убить процесс то в файле будет 0. теперь пишете скрипт который читает этот файл и если там 1 то запускает этот. скрипт прописываете в автозапуск



1



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

06.03.2021, 18:05

15

Ну или как у Semen-Semenich, что почти тоже самое, только через оконные события.

Цитата
Сообщение от Semen-Semenich
Посмотреть сообщение

теперь пишете скрипт который читает этот файл и если там 1 то запускает этот. скрипт прописываете в автозапуск

А зачем такие сложности? Сама прога и должна писать себя в реестр и удалять себя же. Или я не понял?



0



4029 / 2972 / 1073

Регистрация: 21.03.2016

Сообщений: 7,498

06.03.2021, 18:09

16

Garry Galler, я тоже сразу ваш вариант не понял. получается при запуске прога прописывается в автозапуск если прога завершена корректно то удаляет себя из автозапуска. так конечно проще. просто с таким еще не сталкивался и не в курсе про atexit и написал свой велосипед. пойду изучать этот модуль.



0



194 / 160 / 41

Регистрация: 13.05.2019

Сообщений: 828

06.03.2021, 18:11

17

Кидай экзешник в папку по этому пути: C:UsersuserAppDataRoamingMicrosoftWindowsSt art MenuProgramsStartup
user замени на свой



0



38 / 39 / 7

Регистрация: 13.11.2020

Сообщений: 678

06.03.2021, 18:15

 [ТС]

18

Matrix3007, и все??



0



194 / 160 / 41

Регистрация: 13.05.2019

Сообщений: 828

06.03.2021, 18:23

19

Ychenyi, Я не пробовал. Попробуй, потом отпишись.



0



Garry Galler

Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

06.03.2021, 18:43

20

Лучший ответ Сообщение было отмечено Ychenyi как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import atexit
import time
 
import winreg as reg  
import os              
 
def DeleteFromRegistry(value): 
    # key we want to change is HKEY_CURRENT_USER  
    # key value is SoftwareMicrosoftWindowsCurrentVersionRun 
    hive = reg.HKEY_CURRENT_USER 
    subKey = r"SoftwareMicrosoftWindowsCurrentVersionRun"
      
    # open the key to make changes to 
    hKey = reg.OpenKey(hive, subKey, 0,reg.KEY_ALL_ACCESS) 
 
    reg.DeleteValue(hKey, value)
    
    # now close the opened key 
    reg.CloseKey(hKey) 
 
def AddToRegistry(value): 
  
    # in python __file__ is the instant of 
    # file path where it was executed  
    # so if it was executed from desktop, 
    # then __file__ will be  
    # c:userscurrent_userdesktop 
    script = os.path.realpath(__file__) 
    # joins the file name to end of path address 
    address = f"python.exe {script}"  
      
    # key we want to change is HKEY_CURRENT_USER  
    # key value is SoftwareMicrosoftWindowsCurrentVersionRun 
    hive = reg.HKEY_CURRENT_USER 
    subKey = r"SoftwareMicrosoftWindowsCurrentVersionRun"
      
    # open the key to make changes to 
    hKey = reg.OpenKey(hive, subKey ,0,reg.KEY_ALL_ACCESS) 
      
    # modifiy the opened key 
    reg.SetValueEx(hKey, value, 0,reg.REG_SZ,address) 
      
    # now close the opened key 
    reg.CloseKey(hKey) 
 
 
def goodbye(name, adjective):
    DeleteFromRegistry("MyScript")
    print('Goodbye, %s, it was %s to meet you.' % (name, adjective))
 
 
atexit.register(goodbye, "MyScript", 'nice')
AddToRegistry("MyScript")
 
#---------------------------------------
x = 0
 
# пока прога работает - 30 секунд - она в автозапуске; как только завершается (корректно) - ее там уже нет.
while x < 30:
    time.sleep(1)
    x+=1

Добавлено через 2 минуты
Matrix3007,
Зачем давать неправильный совет? ТС-у не нужен просто автозапуск. Ему нужен автозапуск по условию.



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

06.03.2021, 18:43

20

Понравилась статья? Поделить с друзьями:
  • Python windows embeddable package 64 bit
  • Qttabbar не устанавливается на windows 10 64
  • Python string utf 8 to windows 1251
  • Qttabbar не работает на windows 10
  • Python str utf 8 to windows 1251