I want to use Python to get the group id to a corresponding group name.
The routine must work for Unix-like OS (Linux and Mac OS X).
This is what I found so far
>>> import grp
>>> for g in grp.getgrall():
... if g == 'wurzel':
... print g
If you read the grp module documentation you'll see that grp.getgrnam(groupname) will return one entry from the group database, which is a tuple-like object. You can either access the information by index or by attribute:
>>> import grp >>> groupinfo = grp.getgrnam('root') >>> print groupinfo 0 >>> print groupinfo.gr_gid 0
Other entries are the name, the encrypted password (usually empty, if using a shadow file, it'll be a dummy value) and all group member names. This works fine on any Unix system, including my Mac OS X laptop:
>>> import grp >>> admin = grp.getgrnam('admin') >>> admin ('admin', '*', 80, ['root', 'admin', 'mj']) >>> admin.gr_name 'admin' >>> admin.gr_gid 80 >>> admin.gr_mem ['root', 'admin', 'mj']
The module also offers a method to get entries by gid, and as you discovered, a method to loop over all entries in the database:
>>> grp.getgrgid(80) ('admin', '*', 80, ['root', 'admin', 'mj']) >>> len(grp.getgrall()) 73