Difference between revisions of "Converting Bash scripts to Python"

From GRASS-Wiki
Jump to navigation Jump to search
(Created page with "This page contains note for users who convert their Bash script to Python. == User break == In Bash: <source lang=bash> # what to do in case of user break: exitprocedure() { ...")
 
 
(8 intermediate revisions by one other user not shown)
Line 1: Line 1:
This page contains note for users who convert their Bash script to Python.
This page contains some notes for the users who are converting their Bash script to [[GRASS and Python|Python]].
 
__TOC__
== User break ==
== User break ==


Line 37: Line 37:
</source>
</source>


[[Category:Python]]
== Discard warning/error messages ==
 
In Bash:
 
<source lang=bash>
g.remove rast='map' 2>/dev/null
</source>
 
In Python:
 
<source lang=python>
import os
import grass.script as grass
 
nuldev = file(os.devnull, 'w+')
grass.run_command('g.remove', rast = 'map', stderr = nuldev)
nuldev.close()
</source>
{{Python}}
 
Note: In GRASS 6.5+ set
 
export GRASS_MESSAGE_FORMAT=silent (in Bash)
os.environ['GRASS_MESSAGE_FORMAT'] = 'silent' (in Python)
 
[[Category:Scripting]]

Latest revision as of 17:44, 2 February 2013

This page contains some notes for the users who are converting their Bash script to Python.

User break

In Bash:

# what to do in case of user break:
exitprocedure()
{
 g.remove rast=$TMP1 > /dev/null
}
# shell check for user break (signal list: trap -l)
trap "exitprocedure" 2 3 15

In Python:

import sys
import atexit

import grass.script as grass

def cleanup():
    grass.run_command('g.remove',
                      rast = tmp1)

def main():
    ...
    return 0

if __name__ == "__main__":
    options, flags = grass.parser()
    atexit.register(cleanup)
    sys.exit(main())

Discard warning/error messages

In Bash:

g.remove rast='map' 2>/dev/null

In Python:

import os
import grass.script as grass

nuldev = file(os.devnull, 'w+')
grass.run_command('g.remove', rast = 'map', stderr = nuldev)
nuldev.close()

Note: In GRASS 6.5+ set

export GRASS_MESSAGE_FORMAT=silent (in Bash)

os.environ['GRASS_MESSAGE_FORMAT'] = 'silent' (in Python)