Converting Bash scripts to Python

From GRASS-Wiki
Revision as of 17:44, 2 February 2013 by ⚠️NikosA (talk | contribs) (Category:Scripting)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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)