LWN: Comments on "Python finally offloads some batteries" https://lwn.net/Articles/888043/ This is a special feed containing comments posted to the individual LWN article titled "Python finally offloads some batteries". en-us Thu, 23 Oct 2025 09:41:37 +0000 Thu, 23 Oct 2025 09:41:37 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net Python finally offloads some batteries https://lwn.net/Articles/892496/ https://lwn.net/Articles/892496/ LtWorf <div class="FormattedComment"> On the long run these sort of things bring people to using other languages.<br> </div> Mon, 25 Apr 2022 07:33:09 +0000 Python finally offloads some batteries https://lwn.net/Articles/889524/ https://lwn.net/Articles/889524/ kleptog <div class="FormattedComment"> Maybe it&#x27;s a cultural thing? A leech (in my experience) doesn&#x27;t tend to harm the host, and they go away by themselves. They are at most temporarily irritating.<br> <p> However, I just looked it up in the dictionary and it has definitions involving the words &quot;exploit&quot; and &quot;extort&quot; which are much more negative. If that&#x27;s the meaning you&#x27;re using then I can see the statement being interpreted very differently.<br> </div> Tue, 29 Mar 2022 10:11:09 +0000 Python finally offloads some batteries https://lwn.net/Articles/889478/ https://lwn.net/Articles/889478/ pebolle <div class="FormattedComment"> <font class="QuotedText">&gt; it implies that the speaker *utterly despises* the person they&#x27;re talking about.</font><br> <p> Exactly. And the infuriating part, for me, is that this metaphor is used for people and organizations doing what I thought was the right thing: using Free Software.<br> <p> <p> </div> Mon, 28 Mar 2022 21:21:29 +0000 Python finally offloads some batteries https://lwn.net/Articles/889392/ https://lwn.net/Articles/889392/ nye <div class="FormattedComment"> <font class="QuotedText">&gt; If the name describes the situation adequately (&quot;leech&quot;, in this case a metaphor), I don&#x27;t have issues with it</font><br> <p> A leech is a parasite that latches on to an unwilling host and drains the life out of it to sustain itself. Some metaphor. In fact, the word is specifically used as a particularly emotive term of derision and hatred; it implies that the speaker *utterly despises* the person they&#x27;re talking about.<br> <p> Basically, it&#x27;s a more specific way of describing somebody as a &quot;worthless fucking cunt&quot;, or similar. On the offensiveness scale, it&#x27;s high enough that I can only really think of one word that&#x27;s higher but that I might occasionally use in close company when senselessly enraged; everything higher than *that* I wouldn&#x27;t even *think*, let alone say.<br> </div> Mon, 28 Mar 2022 13:23:48 +0000 Python finally offloads some batteries https://lwn.net/Articles/889347/ https://lwn.net/Articles/889347/ edgewood <div class="FormattedComment"> I&#x27;m so sorry that I missed that. I had skimmed the PEP, and had seen that section, but my eyes got pulled to the code sample at the bottom of the section.<br> <p> I just had a chance to convert a script that used cgi.FieldStorage to use urllib.parse.parse_qs instead, and it only took me about a half an hour. It helped that I had a helper method to smooth over some weirdness caused by the interaction of FieldStorage and the structure of my existing HTML, and a lot of the accesses of the FieldStorage values already went through that method. I just changed it to access the parse_qs dictionary instead, and changed a handful of sites that directly accessed FieldStorage values directly to call the helper, and it all worked.<br> <p> My previous plan was to vendor cgi.py, so thank you for responding to my question and pointing me to how I could use supported stdlib code!<br> <p> </div> Sun, 27 Mar 2022 13:53:33 +0000 Python finally offloads some batteries https://lwn.net/Articles/889215/ https://lwn.net/Articles/889215/ oldtomas <div class="FormattedComment"> If the name describes the situation adequately (&quot;leech&quot;, in this case a metaphor), I don&#x27;t have issues with it.<br> <p> That&#x27;s what names have been made for, after all.<br> </div> Fri, 25 Mar 2022 07:13:09 +0000 Python finally offloads some batteries https://lwn.net/Articles/889166/ https://lwn.net/Articles/889166/ dm93 <div class="FormattedComment"> This was my experience as well.<br> <p> I was told not to fix things because &quot;it would clutter up the git history.&quot;<br> </div> Thu, 24 Mar 2022 20:49:01 +0000 PCM https://lwn.net/Articles/889096/ https://lwn.net/Articles/889096/ davidgerard <div class="FormattedComment"> <font class="QuotedText">&gt; BUT I have to agree that if someone _has_ decided to introduce children to computers using a high level language like Python (which clearly suits some children, even it it didn&#x27;t suit me),</font><br> <p> It&#x27;s taught in UK schools now. Scratch in primary school, Python in high school.<br> </div> Thu, 24 Mar 2022 12:19:27 +0000 Python finally offloads some batteries https://lwn.net/Articles/888788/ https://lwn.net/Articles/888788/ tao <div class="FormattedComment"> Obviously if I wanted a car to *stay put* I would not pump any gasoline into it at all. Refuelling it would just make it easier for it to drive off. :P<br> </div> Tue, 22 Mar 2022 10:31:50 +0000 Python finally offloads some batteries https://lwn.net/Articles/888636/ https://lwn.net/Articles/888636/ nilsmeyer <div class="FormattedComment"> <font class="QuotedText">&gt; They don&#x27;t care at all to break a library with only tens of projects using it.</font><br> <p> Should they?<br> </div> Mon, 21 Mar 2022 08:09:04 +0000 Python finally offloads some batteries https://lwn.net/Articles/888461/ https://lwn.net/Articles/888461/ flussence <div class="FormattedComment"> If *Perl* can successfully get rid of its bundled CGI module, Python has no excuse. Surely 20 years is long enough to figure out what alternatives are worth using and have staying power.<br> </div> Fri, 18 Mar 2022 22:07:35 +0000 Python finally offloads some batteries https://lwn.net/Articles/888442/ https://lwn.net/Articles/888442/ cjwatson <div class="FormattedComment"> The PEP itself has several suggestions (<a href="https://peps.python.org/pep-0594/#cgi">https://peps.python.org/pep-0594/#cgi</a>).<br> </div> Fri, 18 Mar 2022 18:49:11 +0000 Python finally offloads some batteries https://lwn.net/Articles/888440/ https://lwn.net/Articles/888440/ cjwatson <div class="FormattedComment"> <a href="https://bugs.python.org/issue27777">https://bugs.python.org/issue27777</a> was an absolute blocker in my application causing extremely confusing failures (and that only due to quite pedantic tests - we might easily have missed it until it hit production), and caused me weeks of work trying to work around it before I eventually concluded that cgi.FieldStorage was engaged in playing core-wars with other bits of itself and there was no realistic prospect of it ever being fixed, so switched to something different instead. See <a href="https://github.com/zopefoundation/zope.publisher/issues/39.">https://github.com/zopefoundation/zope.publisher/issues/39.</a><br> </div> Fri, 18 Mar 2022 18:48:15 +0000 Python finally offloads some batteries https://lwn.net/Articles/888439/ https://lwn.net/Articles/888439/ edgewood <div class="FormattedComment"> Did you find an alternative? I have a few scripts that are only called occasionally, and aren&#x27;t performance sensitive, so are fine as CGI scripts, which saves me deployment hassle.<br> <p> But I do need to parse URL and form parameters, and use FieldStorage for that. I was planning to just copy cgi.py when it went EOL, but if there&#x27;s a better replacement I&#x27;ll use it.<br> </div> Fri, 18 Mar 2022 18:35:40 +0000 Python finally offloads some batteries https://lwn.net/Articles/888436/ https://lwn.net/Articles/888436/ NYKevin <div class="FormattedComment"> <font class="QuotedText">&gt; Most python packages only support of subset of python reasons for lots of good reasons.</font><br> <p> In my experience, this &quot;subset&quot; is usually of the form &quot;version 3.x or later&quot; for some value of x (or, for a handful of very old libraries, &quot;version 2.7.x only&quot;). I don&#x27;t believe I have seen a whole lot of libraries that set a maximum version, other than the ones which were never ported to 3.<br> </div> Fri, 18 Mar 2022 17:40:45 +0000 Python finally offloads some batteries https://lwn.net/Articles/888433/ https://lwn.net/Articles/888433/ NYKevin <div class="FormattedComment"> <font class="QuotedText">&gt; I think the original idea was to save time on doing js files downloads… but apparently the person saying this didn&#x27;t know about all the headers and roundtrips that need to happen before a file can be downloaded.</font><br> <p> I believe this may have been a contributing factor to the invention and adoption of HTTP/2, because now the server can just say upfront &quot;here are all of the libraries you are going to need, when you eventually get around to running the JS.&quot;<br> </div> Fri, 18 Mar 2022 17:37:46 +0000 Is this one of those 80/20 problems? https://lwn.net/Articles/888431/ https://lwn.net/Articles/888431/ canatella <div class="FormattedComment"> This:<br> <p> <font class="QuotedText">&gt; I&#x27;m looking to see python&#x27;s package management improve.</font><br> <p> As of now there are multiple ways of managing dependencies and installing packages: setuptools, pip, pipx, pipenv, poetry, conda, pdm, twine, you name it (I&#x27;m probably mixing stuff here but that&#x27;s part of the problem). There is no common file format for a lock file so end user installing using pip or pipx means that you never know which version of a dependency will be installed (I know I do generate requirements.txt from the lock files but I still got it to somehow break)<br> <p> I&#x27;m okay with moving things out of stdlib, but first fix the package dependency management mess. Bless one solution and document it and support it. The packaging.python.org advises to use pipenv but then warns: &quot;By contrast, Pipenv explicitly avoids making the assumption that the application being worked on will support distribution as a pip-installable Python package.&quot; Why is that ? The officially documented way of building a package doesn&#x27;t support the recommended way of installing packages ? Also recommending pip to install packages ? Guaranteed version conflicts ahead...<br> <p> Sorry for ranting here but I can&#x27;t count how many days I lost fixing dependency issues in Python, maybe I&#x27;m doing it wrong but there is so many way to manage dependencies and delivery in Python and nothing blessed and cleary documented on packaging.python.org. I&#x27;m completely lost.<br> <p> Never had any problem with Ruby with gem and bundler. And honestly, these days, even C++ dep management is better here with Conan then Python, which says a lot.<br> </div> Fri, 18 Mar 2022 17:21:31 +0000 Python finally offloads some batteries https://lwn.net/Articles/888427/ https://lwn.net/Articles/888427/ notriddle <div class="FormattedComment"> If you want Python to stay put, don&#x27;t upgrade. If you don&#x27;t want your cake to go away, don&#x27;t eat it.<br> </div> Fri, 18 Mar 2022 16:33:20 +0000 Python finally offloads some batteries https://lwn.net/Articles/888423/ https://lwn.net/Articles/888423/ logang <div class="FormattedComment"> That seems like wishful thinking at best. It is not nearly as stable as you think it is. Most python packages only support of subset of python reasons for lots of good reasons. If large swaths of the python library are now in PyPi they also now gain complicated dependencies between them as well. Maybe the kernel&#x27;s driver API experiences more churn, but the point remains.<br> <p> As NYKevin pointed out the requests module depends on urllib (yikes) so if that module gets removed from the standard library then you&#x27;ve broken requests for the latest release of python.<br> <p> If tons of important modules are ejected then the core teams haS to stop removing or deprecating things to avoid the same dependancy hell the kernel would have with out of tree drivers.<br> <p> <p> </div> Fri, 18 Mar 2022 15:46:12 +0000 Python finally offloads some batteries https://lwn.net/Articles/888384/ https://lwn.net/Articles/888384/ mpr22 <div class="FormattedComment"> <font class="QuotedText">&gt; is actually that it&#x27;s less work and more desirable for them to just port to Python 3. </font><br> <p> Or to not-Python.<br> </div> Fri, 18 Mar 2022 09:26:54 +0000 Python finally offloads some batteries https://lwn.net/Articles/888382/ https://lwn.net/Articles/888382/ milesrout <div class="FormattedComment"> That pretty much confirms my point, though. There were supposedly tens of thousands of developers out there all dependent on Python 2. They couldn&#x27;t *possibly* move to Python 3. They insisted Python 2 had to be maintained. A few of them, like you, may have inquired about contributing to maintenance of Python 2.<br> <p> But where is the big effort to actually do it? I can&#x27;t see one. There are a few basically-dead projects out there to maintain forks of Python 2.7. I don&#x27;t think (?) any of them are still going. So despite all the handwringing and complaining, it turns out that the *revealed preference* of those people is actually that it&#x27;s less work and more desirable for them to just port to Python 3. <br> <p> It&#x27;s a lot easier to complain or to inquire about something than to actually *do* it. If it were really important to you to maintain Python 2, you would have done it with a bunch of other people for whom it was important. <br> </div> Fri, 18 Mar 2022 08:31:06 +0000 Python finally offloads some batteries https://lwn.net/Articles/888381/ https://lwn.net/Articles/888381/ milesrout <div class="FormattedComment"> It&#x27;s a bit different with Python, because the language itself is - pretty much - stable. They don&#x27;t go out of their way to break core language interfaces in every version.<br> <p> Linux developers, on the other hand, have no qualms about changing core interfaces in any old version. They don&#x27;t exactly *go out of their way to*, especially where it would complicate backporting fixes to older versions. But look at the discussions happening around list iterators. They clearly are willing to change fundamental interfaces quite readily.<br> <p> This means that out-of-tree modules for the kernel are in a very different level of support (none at all) than third-party modules for Python. The whole *point* of Python is a stable interface against which to write third-party modules! That&#x27;s what a language *is*!<br> </div> Fri, 18 Mar 2022 08:25:47 +0000 Python finally offloads some batteries https://lwn.net/Articles/888376/ https://lwn.net/Articles/888376/ LtWorf <div class="FormattedComment"> Well js lacks even kinda basic functions, but I agree with you.<br> <p> The other problem with npm is that somehow they&#x27;ve decided (clearly without ever taking the time to do any measurement) that a library of 1 function is faster than putting a bunch of related functions all into the same library.<br> <p> I think the original idea was to save time on doing js files downloads… but apparently the person saying this didn&#x27;t know about all the headers and roundtrips that need to happen before a file can be downloaded.<br> </div> Fri, 18 Mar 2022 07:48:21 +0000 Python finally offloads some batteries https://lwn.net/Articles/888375/ https://lwn.net/Articles/888375/ mb <div class="FormattedComment"> <font class="QuotedText">&gt;cgi.FieldStorage is so broken as to be a snare and a delusion, so I&#x27;m glad they&#x27;re removing it.</font><br> <p> It works just fine for me.<br> What&#x27;s broken with it?<br> <p> I&#x27;m not against removing unused or rarely used modules.<br> But removing those widely used modules, like cgi, is going to cause major waste of developer time in the order of hundreds of thousands of hours. That&#x27;s not Ok and it will hurt Python&#x27;s reputation. Again.<br> </div> Fri, 18 Mar 2022 07:03:04 +0000 Is this one of those 80/20 problems? https://lwn.net/Articles/888365/ https://lwn.net/Articles/888365/ smitty_one_each <div class="FormattedComment"> We want stability, but not stagnation.<br> <p> I&#x27;m looking to see python&#x27;s package management improve.<br> <p> Maybe doing some battery maintenance will establish precedent to go for further modernization.<br> </div> Fri, 18 Mar 2022 01:46:39 +0000 Python finally offloads some batteries https://lwn.net/Articles/888351/ https://lwn.net/Articles/888351/ cjwatson <div class="FormattedComment"> I don&#x27;t know about the rest of cgi, but cgi.FieldStorage is so broken as to be a snare and a delusion, so I&#x27;m glad they&#x27;re removing it. I got involved with maintaining the multipart package when I found that FieldStorage was unusably broken for my purposes and that its design was enough of a ball of wax that it couldn&#x27;t realistically be fixed without breaking something else.<br> </div> Thu, 17 Mar 2022 23:06:03 +0000 Python finally offloads some batteries https://lwn.net/Articles/888343/ https://lwn.net/Articles/888343/ Paf <div class="FormattedComment"> I think it’s passive because they’re saying they’re not going to do it. It would be *allowed*, but they’re not doing it, which seems reasonable enough.<br> </div> Thu, 17 Mar 2022 22:01:52 +0000 Python finally offloads some batteries https://lwn.net/Articles/888338/ https://lwn.net/Articles/888338/ NYKevin <div class="FormattedComment"> <font class="QuotedText">&gt; but dropping useful modules that people depend upon is not.</font><br> <p> If nobody is willing to maintain the code, it is de facto unmaintained. You can slap a &quot;maintained&quot; label on it all you like, but that does not cause maintenance work to get done.<br> <p> <font class="QuotedText">&gt; but they&#x27;d get help dealing with underlying core changes that affect their module.</font><br> <p> I believe we&#x27;ve all learned the hard way that core changes should be backwards-compatible, and so this kind of help should not be required in the vast majority of reasonable cases.<br> <p> <font class="QuotedText">&gt; But after the pain, the benefit is a quality url module in the standard library and urllib could be re-implemented as a thin wrapper over it, and/or dropped after a very long deprecation period.</font><br> <p> They certainly can&#x27;t do that until requests stops depending on urllib.<br> </div> Thu, 17 Mar 2022 21:17:27 +0000 PCM https://lwn.net/Articles/888322/ https://lwn.net/Articles/888322/ mbunkus <div class="FormattedComment"> It actually isn&#x27;t that easy as not all PCM data is equal. There are several parameters that a decoder must know in order to play that sound back properly, including:<br> <p> * sampling frequency (also called sample rate)<br> * number of channels<br> * order of channels<br> * number of bits per sample (also called bit depth)<br> * signed or unsigned<br> * Endianess if bits per sample &gt; 8<br> * PCM format (e.g. a-law, µ-law, linear, etc.)<br> <p> PCM used on CDs isn&#x27;t the same as PCM used on Blu-rays, for example.<br> <p> Not one of those parameters is really optional. Sure, you can specify all of them manually when decoding (or when using tools such as sox to convert from raw PCM data to one of the containerized variants), but the container&#x27;s whole purpose is to relief us humans of the need to keep that extra information around somehow. That&#x27;s what the WAV container does. As do other container formats, but WAV one of the simplest one to use (within certain limits), making it especially suitable for people new to programming or new to audio processing.<br> </div> Thu, 17 Mar 2022 19:40:20 +0000 Python finally offloads some batteries https://lwn.net/Articles/888310/ https://lwn.net/Articles/888310/ logang <div class="FormattedComment"> I strongly disagree.<br> <p> This would be like the Linux Kernel developers deciding they don&#x27;t have time to maintain large swaths of drivers and just dropping them. Then expecting people who need them to get the oot drivers from github using dkms and shift the weight on distributions to package all these drivers and deal with the resulting dependency hell. It would be a _giant_ mess. What would really happen is the drivers would be maintained even worse then they are now and become even more broken, and people who need them would be out of luck.<br> <p> I think the emphasis should be on growing the project and the number of developers, not splintering off poorly maintained code into situations of even worse maintenance. Dropping modules that are obsolete and which nobody really uses is fine (allowing for the option of a maintainer who cares to step up); but dropping useful modules that people depend upon is not.<br> <p> IMO, the best solution to the urllib issue would be to absorb the requests module into the standard library and bring all their developers with it. A development model similar to the kernel where a subsystem maintainer collects and sends patches upstream to the core python maintainers. There may be issues with this, but none that couldn&#x27;t be worked out in the long run. Yes, the requests developers may need to do more work to ensure backwards compatibility, but they&#x27;d get help dealing with underlying core changes that affect their module. The python core team may have to make process changes to allow for a higher volume of security changes to stable releases. But after the pain, the benefit is a quality url module in the standard library and urllib could be re-implemented as a thin wrapper over it, and/or dropped after a very long deprecation period.<br> <p> I&#x27;ve written many simple scripts that run on urllib because I have no interest in dealing with the additional dependency. If requests was in the standard library I&#x27;d certainly use it universally, but it is not and in many circumstances that disqualifies it. I suspect this is a common practice. The core team have a responsibility not to break such widespread usage with no real alternative for developers.<br> </div> Thu, 17 Mar 2022 18:29:42 +0000 Python finally offloads some batteries https://lwn.net/Articles/888302/ https://lwn.net/Articles/888302/ NYKevin <div class="FormattedComment"> Why? I just described a solution in which all of the same modules would still be installed by default, meaning your individual scripts wouldn&#x27;t need to track anything.<br> </div> Thu, 17 Mar 2022 17:23:18 +0000 Python finally offloads some batteries https://lwn.net/Articles/888301/ https://lwn.net/Articles/888301/ NYKevin <div class="FormattedComment"> You have the right to fork (which someone has already exercised, see the Tauthon project). If you don&#x27;t want to do that, then you were (presumably) expecting to get something out of the PSF that you can&#x27;t get out of a fork, and the PSF is not obligated to give that something to you if they do not wish to do so.<br> </div> Thu, 17 Mar 2022 17:19:52 +0000 Python finally offloads some batteries https://lwn.net/Articles/888299/ https://lwn.net/Articles/888299/ mb <div class="FormattedComment"> cgi will be removed? Really?<br> <p> I bet that&#x27;s being used in thousands of in-production scripts. Including some of mine.<br> Why does this have to be removed?<br> What are the alternatives (that aren&#x27;t deprecated tomorrow)?<br> </div> Thu, 17 Mar 2022 17:19:13 +0000 Python finally offloads some batteries https://lwn.net/Articles/888300/ https://lwn.net/Articles/888300/ NYKevin <div class="FormattedComment"> I never said it was. My point is that, even if it *was* 10 lines on a pastebin, people would still expect support, because people, in general, are unreasonable, and developers get tired of dealing with them.<br> </div> Thu, 17 Mar 2022 17:18:00 +0000 Python finally offloads some batteries https://lwn.net/Articles/888253/ https://lwn.net/Articles/888253/ anselm <blockquote><em>In Python, my impression is that migrating a module is quite a big job, so there's a temptation to just drop it and leave it nowhere and its few remaining users out in the cold.</em></blockquote> <p> The code is there, and making Python packages for PyPI isn't exactly rocket science. The seven people who actually still use <tt>ossaudiodev</tt> or <tt>nntplib</tt> can do their own legwork, or else the modules must not have been all <em>that</em> essential after all. </p> Thu, 17 Mar 2022 14:25:16 +0000 Python finally offloads some batteries https://lwn.net/Articles/888222/ https://lwn.net/Articles/888222/ Wol <div class="FormattedComment"> Yup. The Python people need to create some fjords for old batteries to pine for.<br> <p> Cheers,<br> Wol<br> </div> Thu, 17 Mar 2022 13:20:19 +0000 Python finally offloads some batteries https://lwn.net/Articles/888216/ https://lwn.net/Articles/888216/ nix <div class="FormattedComment"> I don&#x27;t know. Doing that has the advantage that moving things in and out of core is uncontroversial and done routinely, and that things that leave core are *still easily accessible* (to the majority of users who can install stuff as needed), because they&#x27;re still on CPAN. This in turn is easy because the majority of the standard library is maintained using the same build system as CPAN, so moving things from core to CPAN or dual-lifing them in both is literally a matter of running a couple of commands: almost no source changes are usually needed. In Python, my impression is that migrating a module is quite a big job, so there&#x27;s a temptation to just drop it and leave it nowhere and its few remaining users out in the cold.<br> </div> Thu, 17 Mar 2022 12:28:56 +0000 PCM https://lwn.net/Articles/888215/ https://lwn.net/Articles/888215/ nix <div class="FormattedComment"> <font class="QuotedText">&gt; The actual Microsoft WAV format technically does lots more than this, but scarcely anybody bothers implementing any of that stuff, and I think that includes Python&#x27;s wave. So we should admit that we don&#x27;t want WAV we just wanted to store PCM data.</font><br> <p> Yes, but... huge amounts of software accepts and produces WAV files. Much less accepts or produces PCM. It&#x27;s an interchange format in that respect, like it or not...<br> </div> Thu, 17 Mar 2022 12:26:13 +0000 Python finally offloads some batteries https://lwn.net/Articles/888212/ https://lwn.net/Articles/888212/ azumanga <div class="FormattedComment"> I genuinely looked at how I could join the Python 2 team, to keep it going (with minimal future changes). Turns out the people in charge of Python didn&#x27;t want that -- they explicitly wanted it to stop, even if people and companies were willing to provide future support.<br> </div> Thu, 17 Mar 2022 12:08:41 +0000 PCM https://lwn.net/Articles/888211/ https://lwn.net/Articles/888211/ tialaramex <div class="FormattedComment"> All WAV is doing in these scenarios is providing a few header bytes on some raw PCM data. If you have software to just treat some data as 16-bit unsigned PCM data and play it as a sound, you&#x27;ll find your WAV file is exactly that sound, except there&#x27;s a brief fraction of a second glitch at the start because the first few bytes are a header.<br> <p> The actual Microsoft WAV format technically does lots more than this, but scarcely anybody bothers implementing any of that stuff, and I think that includes Python&#x27;s wave. So we should admit that we don&#x27;t want WAV we just wanted to store PCM data.<br> <p> If you&#x27;ve ever run into files (or downloads) named .xls but they were actually CSV files, it&#x27;s a little similar to that. Do you want an XLS reader? Well, that&#x27;s pretty complicated, I worked on one (for Gnumeric) and it&#x27;s quite a ride. But if all you need is to read the CSV file you didn&#x27;t actually want a XLS reader and it&#x27;s probably misleading to name your CSV parser &quot;xls&quot;.<br> </div> Thu, 17 Mar 2022 11:49:19 +0000