New submission from Timothy Geiser: You can't join bytes on another bytes object. (Everything below applies to bytearray, as well)
>>> x = b'foo' >>> y = b'barbaz' >>> x.join(y) Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> x.join(y) TypeError: sequence item 0: expected a bytes-like object, int found But this is fine for strings, and gives you exactly what you'd expect >>> x = 'foo' >>> y = 'barbaz' >>> x.join(y) 'bfooafoorfoobfooafooz' >>> y.join(x) 'fbarbazobarbazo' The best work-around I could think of was >>> x = b'foo' >>> y = b'barbaz' >>> x.join(y[i:i+1] for i in range(len(y))) b'bfooafoorfoobfooafooz' >>> y.join(x[i:i+1] for i in range(len(x))) b'fbarbazobarbazo' That just doesn't feel nearly pythonic enough, considering that the string version works as expected. I'm not even sure what the right solution here is, since the problem is that the iterator for a bytes object returns ints, not length-one bytes objects. Do we need another signature for the bytes.join method that takes byte-like objects and does what I'm describing here? ---------- components: Interpreter Core messages: 248799 nosy: geitda priority: normal severity: normal status: open title: bytes.join() won't take it's own type as the argument type: enhancement versions: Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue24892> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com