linux - 为什么我的所有字符串都打印为字符串文字?
问题描述
我正在为一个实验室制作一个脚本,该脚本将清点那里的所有服务器及其统计信息。我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 "---"
当仅通过调用codename()
Python 2(准确地说是 2.7)调用时,将返回:
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
,我得到了字符串文字版本。有人可以帮我理解一下吗?
解决方案
推荐阅读
- powershell - 如何在 PowerShell 5.1 中将命令行应用程序输出到后台变量?
- java - 休眠:“字段 'id' 没有默认值”
- vba - Vlookup 动态查找来自另一个已关闭工作簿的多列数据而不打开它
- html - 取决于浏览器的图像大小调整
- python-3.x - 如何使用 discord.py 在 Discord 服务器中创建成员列表?
- hyperledger-sawtooth - 新的验证器不同步块
- python - 我正在尝试使用“pip”安装枕头
- ios - iOS 14.0 及更高版本奇怪的自动布局行为
- angular - 角度材料表未填充数据
- c - 如何在“mac os catalina 10.15.6”上更改 zsh 终端线宽