<br><br><div class="gmail_quote">On Fri, Feb 10, 2012 at 2:28 PM, Vinay Sajip <span dir="ltr"><<a href="mailto:vinay_sajip@yahoo.co.uk">vinay_sajip@yahoo.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Sarge, a cross-platform library which wraps the subprocess module in<br>
the standard library, has been released.<br>
<br>
What does it do?<br>
----------------<br>
<br>
Sarge tries to make interfacing with external programs from your<br>
Python applications easier than just using subprocess alone.<br>
<br>
Sarge offers the following features:<br>
<br>
* A simple way to run command lines which allows a rich subset of Bash-<br>
style shell command syntax, but parsed and run by sarge so that you<br>
can run on Windows without cygwin (subject to having those commands<br>
available):<br>
<br>
    >>> from sarge import capture_stdout<br>
    >>> p = capture_stdout('echo foo | cat; echo bar')<br>
    >>> for line in p.stdout: print(repr(line))<br>
    ...<br>
    'foo\n'<br>
    'bar\n'<br>
<br>
* The ability to format shell commands with placeholders, such that<br>
variables are quoted to prevent shell injection attacks.<br>
<br>
* The ability to capture output streams without requiring you to<br>
program your own threads. You just use a Capture object and then you<br>
can read from it as and when you want.<br>
<br>
Advantages over subprocess<br>
---------------------------<br>
<br>
Sarge offers the following benefits compared to using subprocess:<br>
<br>
* The API is very simple.<br>
<br>
* It's easier to use command pipelines - using subprocess out of the<br>
box often leads to deadlocks because pipe buffers get filled up.<br>
<br>
* It would be nice to use Bash-style pipe syntax on Windows, but<br>
Windows shells don't support some of the syntax which is useful, like<br>
&&, ||, |& and so on. Sarge gives you that functionality on Windows,<br>
without cygwin.<br>
<br>
* Sometimes, subprocess.Popen.communicate() is not flexible enough for<br>
one's needs - for example, when one needs to process output a line at<br>
a time without buffering the entire output in memory.<br>
<br>
* It's desirable to avoid shell injection problems by having the<br>
ability to quote command arguments safely.<br>
<br>
* subprocess allows you to let stderr be the same as stdout, but not<br>
the other way around - and sometimes, you need to do that.<br>
<br>
Python version and platform compatibility<br>
-----------------------------------------<br>
<br>
Sarge is intended to be used on any Python version >= 2.6 and is<br>
tested on Python versions 2.6, 2.7, 3.1, 3.2 and 3.3 on Linux,<br>
Windows, and Mac OS X (not all versions are tested on all platforms,<br>
but sarge is expected to work correctly on all these versions on all<br>
these platforms).<br>
<br>
Finding out more<br>
----------------<br>
<br>
You can read the documentation at<br>
<br>
<a href="http://sarge.readthedocs.org/" target="_blank">http://sarge.readthedocs.org/</a><br>
<br>
There's a lot more information, with examples, than I can put into<br>
this post.<br>
<br>
You can install Sarge using "pip install sarge" to try it out. The<br>
project is hosted on BitBucket at<br>
<br>
<a href="https://bitbucket.org/vinay.sajip/sarge/" target="_blank">https://bitbucket.org/vinay.sajip/sarge/</a><br>
<br>
And you can leave feedback on the issue tracker there.<br>
<br>
I hope you find Sarge useful!<br>
<br>
Regards,<br>
<span class="HOEnZb"><font color="#888888"><br></font></span></blockquote><div><br>This is pretty cool I think ill check it out! I really hate working with subprocess it just seems a bit too low level for my taste. <br></div>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="HOEnZb"><font color="#888888">
<br>
Vinay Sajip<br>
--<br>
<a href="http://mail.python.org/mailman/listinfo/python-list" target="_blank">http://mail.python.org/mailman/listinfo/python-list</a><br>
</font></span></blockquote></div><br>