“子流程”modu的问题

2024-09-27 23:27:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个输出转换成一个变量,我在线阅读了使用子流程模块的内容。你知道吗

我试过这个:

#coding: utf-8
import subprocess as sp
output = sp.check_output("echo test && pwd && ls", shell=True)
print(output)

但结果是:

# python test_subprocess.py
b'test\n/data/data/com.termux/files/home\nkali-armhf\nkalinethunter\ntest_subprocess.py\ntestip.py\nwebserver\n'

(注意:我使用termux,Android上的终端仿真器)

如何将这个输出“转换”成更清晰的输出? 比如没有b'或者没有工作\n? 谢谢


Tags: 模块pytestimport内容outputdatacheck
3条回答

sb.check_output函数返回一个bytes对象,它类似于字符串,但表示原始字节。要实际查看原始数据的解码版本,请使用print(output.decode()),而不只是打印输出。你知道吗

您可以看到当前的输出,因为print函数调用bytes对象上的str,该对象返回到一个包含尽可能多信息的表示。这意味着,不会发生自动解码。你知道吗

您可以解码(将字节转换为str)并替换新行

print(output.decode('utf-8').replace('\\n', '\n')) 

结果:

test
/data/data/com.termux/files/home
kali-armhf
kalinethunter
test_subprocess.py
testip.py
webserver

基本上,我是这样使用的:

    data = subprocess.check_output(command, shell=True).decode('utf-8')
    data = data.replace('\\r\\n', '\n')

相关问题 更多 >

    热门问题