Как разобрать объект на строку в Python?

у меня есть этот код:

from subprocess import call
domain = input('input domain\n>>')
callme = 'whois %s ' % domain
data = call(callme, shell=True)

и когда я пытаюсь

print('TYPE OF DATA\n>>%s' % type(data))

это возвращает меня

<class 'int'>

Мне нужно манипулировать возвратом, но я не могу разобрать этот объект. Я пробовал str () и repr () и json.loads (), но ни один из них у меня не работает

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
129
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть код выхода процесса. См. subprocess.call() документация:

Run the command described by args. Wait for command to complete, then return the returncode attribute.

и для связанной записи returncode:

The child return code, set by poll() and wait() (and indirectly by communicate()).

Если вы ожидали, что результат будет выводиться на стандартный вывод, вам следует использовать subprocess.run() и установить для stdout значение subprocess.PIPE, чтобы вы могли прочитать этот вывод в Python:

import subprocess

callme = 'whois %s ' % domain
proc = subprocess.run(callme, shell=True, stdout=subprocess.PIPE)
data = proc.stdout

Это дает вам объект bytes; вы можете настроить text=True на получение декодированного строкового значения.

Демо:

>>> import subprocess
>>> proc = subprocess.run('whois stackoverflow.com', shell=True, stdout=subprocess.PIPE)
>>> proc.stdout.partition(b'\n')[0]
b'% IANA WHOIS server'
>>> proc = subprocess.run('whois stackoverflow.com', shell=True, stdout=subprocess.PIPE, text=True)
>>> print(*proc.stdout.splitlines()[57:74], sep='\n')
   Domain Name: STACKOVERFLOW.COM
   Registry Domain ID: 108907621_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.name.com
   Registrar URL: http://www.name.com
   Updated Date: 2018-01-11T17:50:25Z
   Creation Date: 2003-12-26T19:18:07Z
   Registry Expiry Date: 2019-02-02T11:59:59Z
   Registrar: Name.com, Inc.
   Registrar IANA ID: 625
   Registrar Abuse Contact Email: [email protected]
   Registrar Abuse Contact Phone: 7202492374
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Name Server: NS-1033.AWSDNS-01.ORG
   Name Server: NS-358.AWSDNS-44.COM
   Name Server: NS-CLOUD-E1.GOOGLEDOMAINS.COM
   Name Server: NS-CLOUD-E2.GOOGLEDOMAINS.COM
   DNSSEC: unsigned

Другие вопросы по теме