Как я могу получить указанную строку c? - PullRequest
0 голосов
/ 15 января 2020
def get_system_info():
      command = "free -h"
      return subprocess.check_output(command, shell=True).strip()
@bot.message_handler(commands=['si'])
def send_echo(message):
    bot.send_message(message.chat.id, get_system_info())

Результат:

              total        used        free      shared  buff/cache   available
Mem:            62G         49G        5.3G         69M        7.5G         12G
Swap:          1.0G        5.8M        1.0G

Нужный мне результат:

Memory,
total: 62G
used: 49G
free: 5.3G
shared: 69M
buff/cache: 7.5G
available: 12G

Я пытался сделать это через сплитлайн, но это не сработало

1 Ответ

0 голосов
/ 15 января 2020

Вы можете действовать следующим образом:

# decode used to convert bytes into string, then split it around whitespaces/newlines
output = get_system_info().decode('utf-8').split()
d = {}
for i in range(0, 6):
    d[text[i]] = text[i + 7]

Посредством этого вы можете захватывать пары ключ-значение от total до available. Значения для моей машины:

>>> d
{'total': '15G', 'used': '6.9G', 'free': '486M', 'shared': '842M', 'buff/cache': '8.2G', 'available': '7.6G'}

Я считаю, что вы можете напечатать этот словарь в любом формате, который вам необходим, здесь и далее.

...