Найти - Пользователи
Полная версия: Переменной присвоить результат команды
Начало » Python для новичков » Переменной присвоить результат команды
1
silent_lab
есть команда sdparm –quiet –page=sn /dev/sda
как мне присвоить значение ее выполнение переменной.
Вобщем нужну при загрузке debian проверить Sn диска, и если он не совпадает то произвести выключение ОС.
alrusdi
Модуль sh удобен для этого http://amoffat.github.io/sh/
А вообще subprocess https://docs.python.org/3/library/subprocess.html
silent_lab
Уменя на машинке стоит 2.6 python
и темболее при использовании subprocess. call() получают коды возврата…. а мен нужно значение которые выдаст команда ….. когда она выполняеться то получаю серийный номер диска. Он мне то и нужен.
py.user.next
https://docs.python.org/2.6/library/subprocess.html

py.user.next
а мен нужно значение которые выдаст команда

Это stdout.

>>> import subprocess as subp
>>> 
>>> p = subp.Popen('echo x | cat -n', shell=True, stdout=subp.PIPE)
>>> out, err = p.communicate()
>>> out, err, p.returncode
('     1\tx\n', None, 0)
>>>
silent_lab
Все разобрался почти, может кому пригодится:
import subprocess
infoHDD []
proc = subprocess.Popen('sdparm --quiet --page=sn /dev/sda', shell=True, stdout=subprocess.PIPE)
while True:
    line = proc.stdout.readline()
    if not line:
        break
    infoHDD.append(line)
print (infoHDD[1])

вот что еще интересно , вожноли считать сразу то что нужно или нужно сперва создать список….. допустим в маем примере после выполнения команды возвратит 2 строчки, могу ли сразу допустим пременной line присвоить значение 2й строки без остального кода?
simple_user
возможно через срез
JOHN_16
silent_lab
import subprocess
proc = subprocess.Popen('sdparm --quiet --page=sn /dev/sda', shell=True, stdout=subprocess.PIPE)
proc.wait() # ждем завершения работы дочерней программы
infoHDD=proc.stdout.readlines()[1]
print (infoHDD)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB