Python Nice to Have
Foreword
Notes. Python 2. Consult the Hitchicker’s Guide to Python.
mistune Converts Documents¶
convert, conversion, document, file
The mistune module is a markdown parser that turns markdown file into HTML. Run this script to see the html result in the terminal. For more on converting documents, check Pandoc. Install mistune with pip.
import mistune
text_block = 'The `mistune` module converts .md to .html.'
html_block = mistune.markdown(text_block) # convert to html
print html_block
Or run this command to produce a .html document:
python mistune_pgm.py > mistune_html.html
logging Collects Data¶
- Logging is a library recording what users pass in the code.
- It creates log files (text documents); it collects data.
- First, it is a good tool for gathering data.
- Second, it could also be a good tool for debugging; we can monitor what is inputed in the variables.
We have a starting script.
def get_location(monster, door, player):
"""Takes 3 arguments; string type.
Asks to enter 3 inputs.
Uses the 3 inputs in a sentence to print a sentence.
"""
print "The %s behind the %s door was slayed by %s." % (monster, door, player)
monsterr = raw_input("Enter a monster type: ")
doorr = raw_input("Enter a door color: ")
playerr = raw_input("Enter the player's name: ")
get_location(monsterr, doorr, playerr)
We run the script, the console displays 3 input messages, we input strings (Blob, blue, Al), and the script prints the results.
The Blob behind the blue door was slayed by Al.
Now, we add the logging library.
import logging
logging.basicConfig(filename='game.log', level=logging.DEBUG) # invisible to the user
def get_location(monster, door, player):
"""
Takes 3 arguments; string type.
Asks to enter 3 inputs.
Uses the 3 inputs in a sentence to print a sentence.
"""
print "The %s behind the %s door was slayed by %s" % (monster, door, player)
monsterr = raw_input("Enter a monster type: ")
doorr = raw_input("Enter a door color: ")
playerr = raw_input("Enter the player's name: ")
get_location(monsterr, doorr, playerr)
logging.info('monsterr: {}; doorr: {}; playerr {}'.format(
monsterr, doorr, playerr)) # invisible to the user
The user does not see the difference. But anytime someone runs the script, inputs are save to a log file: game.log.txt.
We open the file.
INFO:root:monsterr: Blob; doorr: blue; playerr Al
INFO:root:monsterr: Puik; doorr: red; playerr Felicia
In the logging.basicConfig function, we select level=logging.DEBUG.
There are 6 log levels (higher to lower): CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET.
INFO,DEBUGare information about the running of an app.WARNINGis for keeping track of questionable or exceptional things happening.ERROR,CRITICALare for when things go wrong.
PIL Manipulates Images¶
The PIL package stands for ‘Python Image library’ or Pillow. Pillow adds image processing capabilities. The library supports many file formats and provides powerful image processing and graphics capabilities. Given these images:
| ballons.jpg | ribbons.jpg |
|---|---|
![]() |
![]() |
import PIL
ballons = Image.open('ballons.jpg')
ribbons = Image.open('ribbons.jpg')
# pixels; left, top, right, bottom (clockwise)
box = (22, 324, 826, 846)
ballons.crop(box).show()
ballons.rotate(90).show()
ballons.rotate(45).show() # won't work
ballons.rotate(45, expand = True).show() # instead
ballons.rotate(90).save('balloon2,jpg') # to the same directory
ballons.rotate(90).save('path/balloon2,jpg') # to another directory

