Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 19, 2011 15:12:59

Savin Me
От:
Зарегистрирован: 2011-06-19
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вытаскивание и обработка информации из командной строки

Всем доброго времени суток!
Имеется задачка цель которой является учет пользователей на машине, в которой запущена программа. При написании, использовав библиотеку os, столкнулся с проблемой записи информации полученной следующим образом:

import os
os.system('net user username')
Данная команда выводит на экран всю доступную информацию об указанном пользователе.

Вопрос состоит в том, как вытащить из результата лишь нужную мне часть и записать ее, например, в файл?

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



Отредактировано (Июнь 19, 2011 15:13:49)

Офлайн

#2 Июнь 20, 2011 02:28:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9851
Репутация: +  853  -
Профиль   Отправить e-mail  

Вытаскивание и обработка информации из командной строки

import subprocess

s = subprocess.Popen('cat /etc/passwd'.split(),
stdout=subprocess.PIPE).communicate()[0]

with open('file.txt', 'w', encoding='utf-8') as f:
print(repr(s.splitlines()[0].split(b':')), file=f)
print('ok')
[guest@localhost tests]$ python3 t.py
ok
[guest@localhost tests]$ cat file.txt
[b'root', b'x', b'0', b'0', b'root', b'/root', b'/bin/bash']
[guest@localhost tests]$



Отредактировано (Июнь 20, 2011 02:29:47)

Офлайн

#3 Июнь 20, 2011 10:36:18

Savin Me
От:
Зарегистрирован: 2011-06-19
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вытаскивание и обработка информации из командной строки

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

import subprocess

s = subprocess.Popen('net user'.split(),
stdout=subprocess.PIPE).communicate()[0]

with open('file.txt', 'w', encoding='utf-8') as f:
print(repr(s), file=f)
print('ok')
На выходе имею что-то вроде:
b'\r\n\x93\xe7\xa5\xe2\xad\xeb\xa5 \xa7\xa0\xaf\xa8\xe1\xa8 \xaf\xae\xab\xec\xa7\xae\xa2\xa0\xe2\xa5\xab\xa5\xa9 \xa4\xab\xef \\\\201-02\r\n\r\n——————————————————————————-\r\nHelpAssistant SUPPORT_388945a0 \x80\xa4\xac\xa8\xad\xa8\xe1\xe2\xe0\xa0\xe2\xae\xe0 \r\n\x83\xae\xe1\xe2\xec \r\n\x8a\xae\xac\xa0\xad\xa4\xa0 \xa2\xeb\xaf\xae\xab\xad\xa5\xad\xa0 \xe3\xe1\xaf\xa5\xe8\xad\xae.\r\n\r\n'

Какую кодировку следует указать для читабельного вывода?

Или в крайнем случае какие есть оптимальные методы отдельного перевода (python3)?



Отредактировано (Июнь 20, 2011 10:39:12)

Офлайн

#4 Июнь 21, 2011 03:54:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9851
Репутация: +  853  -
Профиль   Отправить e-mail  

Вытаскивание и обработка информации из командной строки

>>> s = by.decode('cp866')
>>> print(s)

Учетные записи пользователей для \\201-02

-------------------------------------------------------------------------------
HelpAssistant SUPPORT_388945a0 Администратор
Гость
Команда выполнена успешно.


>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version