после использования pyinstaller systeminfo не будет генерировать выход - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь запустить:

output = subprocess.Popen(["systeminfo"],
                                      stdout=subprocess.PIPE, stdin=subprocess.PIPE,
                                      stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf-8"))

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

pyinstaller --onefile --noconsole start.py

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

output = subprocess.Popen(["netstat", "-aon"],
                                          stdout=subprocess.PIPE, stdin=subprocess.PIPE,
                                          stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf-8"))

и:

output = subprocess.Popen(["arp", "-a"],
                                          stdout=subprocess.PIPE, stdin=subprocess.PIPE,
                                          stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf-8"))

Они работают нормально и запишут вывод в файл.

Если кто-нибудь знает решение этой проблемы, пожалуйста, помогите мне.

Заранее спасибо!

1 Ответ

0 голосов
/ 13 декабря 2018

Это было связано с кодировкой для меня.После использования:

sys_enc = locale.getpreferredencoding()
output = subprocess.run(["systeminfo"], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE, encoding=sys_enc)
file.write(output.stdout)

Все работает и пишет в файл ок.

...