【问题标题】:How to parse a object to string in python?如何在python中将对象解析为字符串?
【发布时间】:2018-10-11 18:50:01
【问题描述】:

我有这个代码:

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 python-3.x subprocess


    【解决方案1】:

    你有进程的退出代码。见subprocess.call() documentation

    运行 args 描述的命令。等待命令完成,然后返回returncode 属性。

    对于链接的returncode 条目:

    子返回码,由poll()wait() 设置(间接由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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多