&gt; API-wise, in my humble experience, it&#x27;s hell to deal with operations that are supposed to work on bit-streams but try to be smart and ask me for encodings of those - this is information I might not even have when building on those basic operations. The &quot;oddities&quot;, how you call them, are the result of not over-abstracting the code to handle yet-unknown problems.<p>That&#x27;s how C ended up as the security nightmare that it is. There are a lot of things you can do in C that you can&#x27;t do in Python - you can reinterpret strings or floats as integers, you can subtract pointers from integers, you can write to random memory addresses.... Sometimes these things are useful, but most of the time they just lead to your program breaking in an unhelpful, nonobvious way.<p>Python is not that kind of language; it will go to some pains to help you not make mistakes. If you want to do bit-twiddling in Python there are APIs for it, and you could implement a &quot;bit-level cat&quot; using them, but it&#x27;s never going to be the primary use case. Arguably there should be better support for accessing stdin&#x2F;stdout in binary mode, but that would make it very easy to accidentally interleave text and binary output which would again result in (probably silent) corruption. (Writing a &quot;binary cat&quot; that concatenates two <i>files</i> of bytes would not lead to any of the problems in the linked article - it&#x27;s only trying to use stdin&#x2F;stdout that&#x27;s causing the trouble in the link).