python - 如何在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() 但这些都不适合我
解决方案
你有进程的退出代码。请参阅subprocess.call()
文档:
运行 args 描述的命令。等待命令完成,然后返回
returncode
属性。
对于链接的returncode
条目:
子返回码,由
poll()
andwait()
(间接由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: abuse@name.com
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
推荐阅读
- batch-file - 需要在批处理文件中模拟 Win 键
- scala - 列出多个匿名/下划线参数以供理解
- python - 使用 ElementTree.SubElement 添加多个子元素
- html - -webkit-text-size-adjust: none; 是什么类型的代码?
- c# - 请求另一台服务器解析域名?
- javascript - XMLHttpRequest:对象的状态必须是 OPENED 并且 GET 返回 0
- r - 在 Shiny 中使用具有自适应约束的自定义视觉对象
- systemd - 如何运行多个命令 systemd
- java - Java中所有回调实现的代码相同
- ruby-on-rails - 如何将现有的 Rails 应用程序移动到 Heroku?(sqlite 到 postgres)