回答

收藏

将字节转换为字符串

技术问答 技术问答 198 人阅读 | 0 人回复 | 2023-09-12

我使用此代码从外部程序获取标准输出:
" L" J% j! S) ~* k
    >>> from subprocess import *>>> command_stdout = Popen(['ls','-l'],stdout=PIPE).communicate()[0]
    * x) v0 ]1 ?' j) q
communicate() 方法返回一个字节数组:
, b, e. H$ g, {. u0 Z) c: p/ J
    >>> command_stdoutb'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2\n'
    ' u, h- W* ~. `6 {' _' `: N0 m* l2 U
但是,我想用输出作为普通 Python 字符串。这样我就可以这样打印了:
3 C4 j# A0 o3 m7 U( h6 s
    >>> print(command_stdout)-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2
    0 f0 V; l' e6 u& _
我想这就是binascii.b2a_qp()使用方法,但当我尝试它时,我得到了相同的字节数组:4 |; k4 |" W' L1 Z/ K% g; j
    >>> binascii.b2a_qp(command_stdout)b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2\n'
    ; r& Y+ g! y. }+ K& Y6 q: @. M
如何将字节值转换为字符串?我的意思是使用电池而不是手动操作。我希望 Python 3 可以。
, a/ G& G3 w* |( i8 ^                                                                5 N& D) t* t  _9 I7 }* x+ \# a
    解决方案:                                                                3 P8 F; B; L9 D0 `! @( q0 @+ M9 A
                                                                您需要解码 bytes 对象生成字符串:
) Q1 K4 I5 F. ^2 _; O5 _8 Y; W( ?
    >>> b"abcde"b'abcde'# utf-8 is used here because it is a very common encoding,but you# need to use the encoding your data is actually in.>>> b"abcde".decode("utf-8") 'abcde'1 d* `5 K, N# l8 S) B
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则