2017-09-02 97 views
0

我使用Shairport同步元阅读器管点播数据,我目前使用下面的python3代码返回一个字符串指定的行,标题和专辑字符串,使用我在网上找到的代码。我遇到的最后一行注释的错误指的是'类型str不支持缓冲区API'。打印从subprocess.Popen输出

我proc.stdout.readline()输出如下:

b'Client\'s IP: "fe80::1477:d5d0:763a:a093".\n' 
b'"ssnc" "svip": "fe80::25f8:b47e:c427:e431".\n' 
b'"ssnc" "snua": "AirPlay/352.17.1".\n' 
b'"ssnc" "acre": "2761427076".\n' 
b'"ssnc" "daid": "FA4CC8448AD2A90E".\n' 
b'"ssnc" "pbeg": "".\n' 
b'"ssnc" "pvol": "-11.74,-19.48,-96.30,0.00".\n' 
b'"ssnc" "pfls": "".\n' 
b'"ssnc" "pcst": "2456171464".\n' 
b'Picture received, length 95419 bytes.\n' 
b'"ssnc" "pcen": "2456171464".\n' 
b'"ssnc" "prgr": "2455930277/2456184560/2468648320".\n' 
b'"ssnc" "mdst": "2456186320".\n' 
b'Album Name: "Funeral".\n' 
b'Artist: "Arcade Fire".\n' 
b'Composer: "Arcade Fire/Josh Deu".\n' 
b'Genre: "Indie Rock".\n' 
b'Title: "Neighborhood #1 (Tunnels)".\n' 
b'"ssnc" "mden": "2456186320".\n' 
b'"ssnc" "pcst": "2456186320".\n' 
b'Picture received, length 95419 bytes.\n' 
b'"ssnc" "pcen": "2456186320".\n' 
b'"ssnc" "prgr": "2456019183/2456191600/2468737226".\n' 
b'"ssnc" "prsm": "".\n' 

我的问题是如何降低打印输出到涉及到艺术家,曲目和专辑线的值?

回答

0

这些而不是字符串字节,参见例如https://docs.python.org/3/reference/lexical_analysis.html#literals

字节文字总是与 'b' 或 'B' 前缀;他们产生一个 字节类型的实例,而不是str类型。它们可能只有 包含ASCII字符;数值为128或更大的字节 必须用转义表示。

您可以使用decode将它们转换为字符串:

line = proc.stdout.readline().decode() 
+1

完美地工作,非常感谢。我一直在尝试str()输出。 –