8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 Python 3 中将字节转换为字符串

Jaromanda X 1月前

114 0

我将外部程序的标准输出捕获到字节对象中:>>> from subprocess import *>>> stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]>>>

我将外部程序的标准输出捕获到一个 bytes 对象中:

>>> from subprocess import *
>>> stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]
>>> 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'

我想将其转换为普通的 Python 字符串,以便可以像这样打印它:

>>> print(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

如何 bytes 使用 Python 3 str 对象转换为


See 在 Python 3 中将字符串转换为字节的最佳方法? for the other way around.

帖子版权声明 1、本帖标题:在 Python 3 中将字节转换为字符串
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Jaromanda X在本站《string》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 由于这个问题实际上是在询问 subprocess 输出,因此您可以使用更直接的方法。最现代的方法是使用 subprocess.check_output 并传递 text=True (Python 3.7+) 以使用系统默认编码自动解码 stdout:

    text = subprocess.check_output(["ls", "-l"], text=True)
    

    对于 Python 3.6, Popen 接受 编码 关键字:

    >>> from subprocess import Popen, PIPE
    >>> text = Popen(['ls', '-l'], stdout=PIPE, encoding='utf-8').communicate()[0]
    >>> type(text)
    str
    >>> print(text)
    total 0
    -rw-r--r-- 1 wim badger 0 May 31 12:45 some_file.txt
    

    如果您不处理子进程输出,则标题中问题的一般答案是将 解码 为文本:

    >>> b'abcde'.decode()
    'abcde'
    

    如果没有参数, sys.getdefaultencoding() 。如果您的数据不是 sys.getdefaultencoding() 解码 decode

    >>> b'caf\xe9'.decode('cp1250')
    'café'
    
返回
作者最近主题: