There is nothing like a challenge to bring out the best in man. - Sean Connery
Hi Pythonistas, a new week, a new 'bite' of Python coding!
After last week's article on generators we will get you to practice a bit more with them.
Inspired by David Beazley's Generator Tricks for Systems Programmers we ask you to turn the following unix pipeline into Python code using generators. To get a bunch of .py files you can use our challenges repo you cloned. Or use a project of your own.
Note that in our experience one subprocess is not necessarily one generator, for example 'sort|uniq|sort' can be easily combined into one, as well as 'grep|sed'. See our template if you need guidance.
# assuming you pulled our challenges master and are in our 11/ subdirectory # code this unix pipeline into Python using generators # $ for i in ../*/*py; do grep ^import $i|sed 's/import //g' ; done | sort | uniq -c | sort -nr 4 unittest 4 sys 3 re 3 csv 2 tweepy 2 random 2 os 2 json 2 itertools 1 time 1 datetime
Not familiar yet with Unix pipeline? It's pretty well explained here.
To follow along with our challenges (UPDATES)
Update I) Forking
We got some feedback that Forks don't lead to activity on your Github profile. One of our followers was so nice to update our INSTALL (via PR (Pull Request)). Maybe you want to use the workaround under III. if the credit thing is an issue for you. See issue #2 for more details.
Update II) Submit your Solution
We made a new 'community' branch. Another way to get credit is to submit your code via a new PR. We do not merge anything on our master or solutions branches, but if you ping us this way we add your solution to our new community branch (as filename 'topic-GHuser.py') and feature it in our review if it taught us something cool.
Code Challenges Archive
And last but not least: there is no best solution, only learning more/ better Python. We're looking forward reviewing our and your solutions end of this week. Good luck and have fun!
Keep Calm and Code in Python!
-- Bob and Julian
See an error in this post? Please submit a pull request on Github.