将 shell 命令行输出的值分配给 python 中的 Vaiable



我有一个包含以下内容的文件。

[oracle@hostname POST_DB_REFRESH_VALIDATIONS]$ cat .DB_Creds.txt
DEW:SYSTEM:ss2021:NPDOR
STW:SYSTEM:ss2021:NPDOR

当我在shell中运行以下命令时,我得到的输出是SYSTEM

[oracle@hostname POST_DB_REFRESH_VALIDATIONS]$ grep DEW .DB_Creds.txt | awk -F':' '{print $2}'
SYSTEM

而当我在python3命令行中使用subprocess运行相同的程序时,我得到的输出如下。

Python 3.6.8 (default, Sep 26 2019, 11:57:09)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> output = subprocess.check_output("grep DEW .DB_Creds.txt | awk '{print $2}'", shell=True)
>>> print(output)
b'SYSTEMn'

我只希望它是SYSTEM,而不是任何其他特殊字符。

output的类型为bytes。您希望首先将其解码为类型为str的值,然后去掉后面的换行符。

>>> print(output.decode().strip())
SYSTEM

您可以观察到方法调用所产生的差异:

>>> output
b'SYSTEMn'
>>> output.decode()
'SYSTEMn'
>>> output.decode().strip()
'SYSTEM'

默认情况下,decodebytes值视为字符串的UTF-8编码,但这种假设是有效的,因为您有纯ASCII文本。

相关内容

  • 没有找到相关文章

最新更新