为什么我所有的字符串都打印为字符串文字?

时间:2018-07-09 23:16:23

标签: linux python-3.x bash subprocess python-2.x

我正在为一个实验室编写脚本,该脚本将列出那里的所有服务器及其统计信息。我使用subprocess将bash命令的输出传递到python代码中的变量中。但是,我返回的输出使我感到沮丧。在一台计算机上,显示以下内容:

def codename():
"""
Determines the product name of the actual motherboard/machine that it is used on
:return: Returns the system's codename
"""
sysman = str(subprocess.check_output(('dmidecode', '-s', 'system-manufacturer'))).rstrip() + " "
sysprodname = str(subprocess.check_output(('dmidecode', '-s', 'system-product-name'))).rstrip() + " "
sysver = str(subprocess.check_output(('dmidecode', '-s', 'system-version'))).rstrip()

# Checks for incomplete information

sysinfo = [sysman, sysprodname, sysver]

for i in range(len(sysinfo)):
    if not any(c.isalpha for c in sysinfo[i]):
        sysinfo[i] = ""

sysname = sysman + sysprodname + sysver

if sysname is not None:
    return str(sysname)
else:
    return "---"

在Python 2(准确地说是2.7)中仅通过调用codename()进行调用时,将返回:

innotek GmbH VirtualBox 1.2

在Python 3(3.6.5)中运行它会返回:

b'innotek' GmbH\n' b'VirtualBox\n' b'1.2\n'

我开始认为这是特定于python的问题,但是在另一台我编写代码的机器(openSUSE Tumbleweed)上,python --version返回:

Python 3.6.5 并且python3 --version还会返回:

Python 3.6.5

但是,当我使用python script.py运行它时,会得到格式正确的字符串,而当我使用python3 script.py运行它时,则会得到字符串文字版本。有人可以帮我一下吗?

0 个答案:

没有答案