PlatonB/bioinformatic-python-scripts

Извлечение значения объёма RAM Python3-скриптом в Windows

PlatonB opened this issue · 1 comments

В Linux получить это значение и использовать его далее Питоном оказалось довольно просто. А в Windows сделать подобное никак не удаётся. Если перенаправить вывод Windows-команды systeminfo в файл, то получаются кракозябры:

€¬п 㧫 : LAPTOP-MFCV4G39
Ќ §ў ­ЁҐ Ћ‘: Њ ©Єа®б®дв Windows 10 „®¬ и­пп ¤«п ®¤­®Ј® п§лЄ
‚ҐабЁп Ћ‘: 10.0.17134 Ќ/„ Ї®бв஥­ЁҐ 17134
€§Ј®в®ўЁвҐ«м Ћ‘: Microsoft Corporation
Џ а ¬Ґвал Ћ‘: €§®«Ёа®ў ­­ п а Ў®з п бв ­жЁп

Попробовал выводить напрямую в Питон.

import subprocess
system_info = subprocess.check_output(['systeminfo'])
b'\r\n\x88\xac\xef \xe3\xa7\xab\xa0: LAPTOP-MFCV4G39\r\n\x8d\xa0\xa7\xa2\xa0\xad\xa8\xa5 \x8e\x91: \x8c\xa0\xa9\xaa\xe0\xae\xe1\xae\xe4\xe2 Windows 10 \x84\xae\xac\xa0\xe8\xad\xef\xef \xa4\xab\xef \xae\xa4\xad\xae\xa3\xae \xef\xa7\xeb\xaa\xa0\r\n\x82\xa5\xe0\xe1\xa8\xef \x8e\x91: 10.0.17134 \x8d/\x84 \xaf\xae\xe1\xe2\xe0\xae\xa5\xad\xa8\xa5 17134\r\n\x88\xa7\xa3\xae\xe2\xae\xa2\xa8\xe2\xa5\xab\xec \x8e\x91: Microsoft Corporation\r\n\x8f\xa0\xe0\xa0\xac\xa5\xe2\xe0\xeb \x8e\x91

Рекомендуемая на stackoverflow команда, декодирующая байты в текст, в данном случае не работает:

system_info.decode('utf-8')
Traceback (most recent call last):
File "<pyshell#6>", line 1, in
system_info.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x88 in position 2: invalid start byte

Нашёл также модуль struct, но непонятно, какой в моём случае вписывать первый аргумент функции struct.unpack().

Попытки декодировать в cp1251 и koi8-r:

system_info.decode('cp1251')
'\r\n€¬п 㧫\xa0: LAPTOP-MFCV4G39\r\nЌ\xa0§ў\xa0\xadЁҐ Ћ‘: Њ\xa0©Єа®б®дв Windows 10 „®¬\xa0и\xadпп ¤«п ®¤\xad®Ј® п§лЄ\xa0\r\n‚ҐабЁп Ћ‘: 10.0.17134 Ќ/„ Ї®бв஥\xadЁҐ 17134\r\n€§Ј®в®ўЁвҐ«м Ћ‘: Microsoft Corporation\r\nЏ\xa0а\xa0¬Ґвал Ћ‘

system_info.decode('koi8-r')
'\r\n┬╛О Ц╖╚═: LAPTOP-MFCV4G39\r\n█═╖╒═╜╗╔ ▌▒: ▄═╘╙Ю╝А╝ДБ Windows 10 └╝╛═Х╜ОО ╓╚О ╝╓╜╝ё╝ О╖К╙═\r\n┌╔ЮА╗О ▌▒: 10.0.17134 █/└ ╞╝АБЮ╝╔╜╗╔ 17134\r\n┬╖ё╝Б╝╒╗Б╔╚Л ▌▒: Microsoft Corporation\r\n▐═Ю═╛╔БЮК ▌▒

Скрипт, в котором наблюдается проблема: https://github.com/PlatonB/bioinformatic-python-scripts/blob/master/refSNPID_search_full.py

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