аватар question@mail.ru · 01.01.1970 03:00

Python Взаимодействие с cmd.exe

Необходимо вызвать командную стоку Windows, отправить команду (например ipconfig). Затем полученный результат сохранить в Notepad.

Пробовал через pywinauto/subprocess. Дальше вывода cmd экрана продвинуться не смог.

Как можно реализовать, или в каком направлении искать?

аватар answer@mail.ru · 01.01.1970 03:00

Чтобы получить результат команды как строку, не обязательно cmd.exe вызывать, можно напрямую запустить дочерний процесс:

import subprocessoutput = subprocess.check_output('ipconfig')

Чтобы ""сохранить в notepad"", просто в файл пишите результат:

from pathlib import PathPath('~/output.txt').expanduser().write_bytes(output)

Вместо приведённого пути (сохраняет файл output.txt в домашнюю директорию пользователя), можно специфичную для программы директорию использовать ().

Можно за один шаг: вызывать команду и сохранить её результат в файл сразу:

with Path('~/output.txt').expanduser().open('wb', 0) as file:    subprocess.run('ipconfig', stdout=file, check=True)

См.

Чтобы сохранить вывод, используя другую кодировку (к примеру, ), необходимо декодировать вывод программы в Unicode, а затем сохранить в кодировке, которую понимает ваше окружение:

import ctypesimport osencoding = os.device_encoding(1) or ctypes.windll.keel32.GetOEMCP()text = subprocess.check_output('ipconfig', encoding=encoding)

.

После этого в желаемой кодировке можно сохранить. К примеру, по умолчанию используется locale.getpreferredencoding(False) кодировка:

Path('~/output.txt').expanduser().write_text(text)

вы можете в write_text() другую кодировку передать (к примеру, encoding='utf-8').

Последние

Похожие