Using Python instead of Bash

Cecil Westerhof Cecil at decebal.nl
Sun May 31 13:06:40 EDT 2015


Op Sunday 31 May 2015 17:05 CEST schreef Dennis Lee Bieber:

> On Sun, 31 May 2015 14:42:02 +0200, Cecil Westerhof
> <Cecil at decebal.nl> declaimed the following:
>
>> I help someone that has problems reading. For this I take photo's
>> of text, use convert from ImageMagick to make a good contrast
>> (original paper is grey) and use lpr to print it a little bigger.
>>
>> Normally I would implement this in Bash, but I thought it a good
>> idea to implement it in Python. This is my first try:
>
> 	<code snipped>
>
> 	My first impression is that all you did was convert BASH line
> for line to Python -- and are still passing all the real work over
> to external programs ("convert" and "lpr"), using subprocess...
> Instead of a BASH script alternating between running command line
> utilities convert and lpr, you have a BASH (or other) shell running
> a Python process and Python alternating between a pair of command
> line utilities with all the overhead of creating and terminating
> processes.

That is true (the conversion). But there are two reasons for this.
- I want to get some experience with Python.
- I want to implement extra functionality, which would be easier with
Python as with Bash.

Also: I am thinking about using ipython3 instead of bash.


> 	I'll concede submitting jobs to a print queue probably does work
> easier this way, but I'd have to ask if the "convert" could be
> performed using actual Python -- the old Python Imaging Library --
> PIL -- for example (superseded, I think, by pillow)?

That is something to look into. My experience with ImageMagick is very
good, but if Python could do an equal good job, then it would be good
to switch. That also removes a dependency.


> 	Given that you do nothing between creating a subprocess and
> waiting for it to exit, subprocess.Popen() could be overkill -- the
> simpler subprocess.call() could be sufficient (heck, the old
> os.system() is sufficient, but preference seems to be to ignore it
> for subprocess.call() instead).

I already use check_call.


By the way: because of the lpr my script only works on Linux (and
probably Unix and Apple). Can I rewrite it in such a way that it also
works with Windows? Someone else has to test it then, because I do not
have a Windows computer.

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof



More information about the Python-list mailing list