Scratching the Surface of Python Libraries
[caption id="attachment_9999" align="alignleft" width="355"] Python logo from the Python Foundation[/caption]
It's somewhat embarrassing to admit my first impressions of Python came from programmer humor. The first one I can recall is xkcd #353. Another one that made an impression was the "If programming languages were essays" series.
The common thread is the tremendous library of tools available to python programmers just a "import" command away. I think the hard part of me getting up to speed in Python won't be the syntax or the constructs, it'll be getting to know what libraries are available. I foresee my biggest hurdle to Python productivity would be spending three hours writing something before it occurs to me to look for a library where someone has already done the work, find it, and finish the task in 15 seconds.
It makes sense that this ecosystem of libraries is a huge strength to Python and also an equally huge liability and a hindrance in transition to Python 3. By breaking backwards compatibility, Python 3 had to rebuild this ecosystem of libraries from scratch. It's hard for people to find motivation to use the new Python 3 - with its limited set of ported libraries - when they could stay with the comfortable group of friends they already know in the Python 2 world.
To learn the ropes, there's nothing like diving right in. I wanted to write a simple script to handle a task I had: enumerate video files in my collection and call FFmpeg to convert them from their old formats to the modern MPEG 4 Video format (h264 + AAC). Most of what I need to do for walking the directory tree comes from "import os" and "import os.path". Calling FFmpeg turns out to be trivial after "import subprocess". And the final icing on the cake: a library to parse command-line parameters using "import argparse". Argparse even has a HOWTO tutorial to walk me through using it.
In less than an hour, this complete novice was able to build a decently robust Python script for video conversion. Color me impressed.