1 / 1 / 0
Регистрация: 27.03.2020
Сообщений: 18

subprocess кракозябры

02.11.2020, 12:34. Показов 2559. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот часть кода в котором ошибка:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from tkinter import *
from tkinter import messagebox
import json
import subprocess
 
-----------
self.but_start = Button(self.frame_bot2, text='Старт', width=10, height=2, bg='gray', command=self.start_bot, fg='green')
        self.but_start.pack()
 
 
    def start_bot(self):
        if self.but_start['text'] == 'Старт':
            self.but_start.configure(text='Стоп', fg='red')
            command = "python vkbot.py"
            self.process = subprocess.Popen(command, shell=True)
        else:
            self.but_start.configure(text='Старт', fg='green')
            subprocess.Popen("TASKKILL /F /PID {pid} /T".format(pid=self.process.pid, encoding='cp866'))

При нажатии на кнопку "Старт", текст кнопки меняется и запускается процесс vkbot.py. При повторном нажатии на эту кнопку, опять же меняется текст, и процесс закрывается. Все работает нормально, только при повторном нажатии выдает это:
Кликните здесь для просмотра всего текста
�ᯥ譮: �����, � �����䨪��஬ 2480, ���୨� ����� 9588, �� �����襭.
�ᯥ譮: �����, � �����䨪��஬ 9588, ���୨� ����� 4108, �� �����襭.
�ᯥ譮: �����, � �����䨪��஬ 4108, ���୨� ����� 9072, �� �����襭.

Не знаю что это значит
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2020, 12:34
Ответы с готовыми решениями:

subprocess результат выполнения
Такой код для подсчета строк: int(subprocess.check_output().split()) Как вывести результат в консоль "visual studio code",...

Не работает функция subprocess.run
Доброго времени суток! Я пытаюсь научиться запускать команды для командной строки Windows с помощью функции run из модуля subprocess. Но...

subprocess выполнение нескольких команд
Добрый день. Нужно выполнить несколько команд, например в консоли windows так: C:\Users\s05181>cd C:\Program Files\QCAD ...

3
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2020, 12:46
Видимо, пытается закрыть процессы с этими ID. Не та кодировка в консоли. Вы явно указали 866, вероятно, там 1251.

На самом деле, тут проблема сложнее, чем кажется. taskkill как-то по особому работает со своими субпроцессами и их кодировками, я на эти грабли уже наступал.
0
1 / 1 / 0
Регистрация: 27.03.2020
Сообщений: 18
02.11.2020, 14:29  [ТС]
subprocess начал использовать только вчера, и даже не разобрался в нем. Код взял на просторах интернета.
Поменял encoding='cp866' на encoding='cp1251' - тоже самое. А еще каждый раз цифры разные.
Возможно есть проще открывать и закрывать процессы? Например process.kill(), только он у меня почему-то не работал
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2020, 15:51
Лучший ответ Сообщение было отмечено naripi6291 как решение

Решение

А, я посмотрел, это не тот encoding, про который я подумал. Подайте encoding в Popen, как отдельный параметр. И считывайте ответ через communicate:
Python
1
        output, err = process.communicate()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.11.2020, 15:51
Помогаю со студенческими работами здесь

Ошибка при компиляции subprocess.py
Здравствуйте. Помогите новичку, столкнулся с проблемой с subprocess.py при компиляции

Shell command linux Subprocess
Есть небольшой набор линуксовых команд, этот скрипт нужно выполнить на виртуальной машине. Встал на том, что есть список команд, когда в...

Subprocess - завершить процесс. python 3
Здравствуйте. В одной папке с программой лежит server.exe (приложение которое работает бесконечно долго). Например: from time...

Не исполняется subprocess из под планировщика задач
subprocess не исполняется из планировщика совсем. То есть для проверки прописал следующее f = open('/test.txt','w') f.write('test') ...

Ввод в терминал открытый через subprocess
Через subprocess отрыл терминал, но не знаю как мне отдавать ему команды через IDLE. Как можно вводить команды терминалу через IDLE? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru