我使用python-RTSP运行RTSP,使用Twisted和Python3。我正在尝试使用上述配置访问youtube链接的RTSP信息。我必须使用Python3,因为我剩下的代码在Python3中。
我正在发送命令
self.sendLine('%s %s RTSP/1.0' % (command, path))描述命令的位置,路径是url
rtsp://r7---sn-a5m7zu7d.c.youtube.com/CiILENy73wIaGQlFHOtrHD-E8RMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp下面的陈述出错了:
File "/home/akshay_v/valuconnex-python/twisted/protocols/basic.py", line 637, in sendLine
return self.transport.write(str(line + self.delimiter))
builtins.TypeError: Can't convert 'bytes' object to str implicitly
self.delimiter = b'\r\n'
line is the *str* passed as argument in above statement.怎样才能让这件事奏效?
发布于 2014-05-27 18:22:03
正如Jean所说,您不能使用Python 3运行python。
如果您对此失败的确切性质感到好奇,那么问题是transport.write接受一个bytes对象。在Python2上,它是与str相同的类型,在Python3上是它自己的类型。在Python2上与Python3的str类似的类型是unicode,您不能将unicode写到套接字,所以不能将它传递给transport.write。
但是,您在twisted.protocols.basic中显示的代码行看起来像是一个错误修改的Twisted版本;我找不到Twisted在那个位置调用str的版本。您是如何获得Twisted的这个版本的,您是否尝试过升级到最近的版本(本文撰写时为14.0.0)?
发布于 2014-05-27 11:58:26
似乎还没有将Python移植到Python 3。尝试在Python2.7上运行它(或者像自述的那样,甚至可以运行Python2.6)。Python 3与Python 2不兼容,没有移植到它的软件将无法工作。
https://stackoverflow.com/questions/23881783
复制相似问题