[Tutor] Python working with Bash....arrrggggh!
eryksun
eryksun at gmail.com
Fri Aug 24 07:37:09 CEST 2012
On Thu, Aug 23, 2012 at 11:55 PM, Ray Jones <crawlzone at gmail.com> wrote:
> For example, if I wish to test if a file exists, I might do
>
> test = Popen('[ -f file-i-want-to-test-for ]')
>
> But the moment I invoke Bash for a test, I must deal with the fact that
> Bash returns a zero for true and a non-zero for false. But in Python,
Please see os.path:
http://docs.python.org/library/os.path
That said, you can use check_call and check_output if you want a more
Pythonic interface. These raise an exception for a non-zero return
code. For example:
# check.py
from subprocess import check_call, CalledProcessError
try:
# in Debian [ is at /usr/bin/[
rc = check_call(["/usr/bin/[", "-f", "check.py", "]"])
print "success:", rc
# or pass the command string to the shell
rc = check_call("[ -f check.py ]", shell=True)
print "success:", rc
# force a failure
rc = check_call("[ -f notfound ]", shell=True)
print "success:", rc # this won't execute
except CalledProcessError as e:
print "failed: %d" % e.returncode
More information about the Tutor
mailing list