[Tutor] Parsing /etc/passwd
Gerhardus Geldenhuis
gerhardus.geldenhuis at gmail.com
Wed Oct 12 15:54:41 CEST 2011
Fantastic,
Thanks Hugo that makes 100% sense now! Testing both regex for including /
and doing split and when done throwing both away and using the default
module.
Regards
On Wed, Oct 12, 2011 at 2:49 PM, Hugo Arts <hugo.yoshi at gmail.com> wrote:
> On Wed, Oct 12, 2011 at 3:41 PM, Gerhardus Geldenhuis
> <gerhardus.geldenhuis at gmail.com> wrote:
> > Hi
> > I wrote the following code:
> > f = open('/etc/passwd', 'r')
> > users = f.read()
> > userelements = re.findall(r'(\w+):(\w+):(\w+):(\w+):(\w+):(\w+):(\w+)',
> > users)
> > print userelements
> > for user in userelements:
> > (username, encrypwd, uid, gid, gecos, homedir, usershell) = user #
> > unpack the tuple into 7 vars
> > print username
> >
> > but I get no results so my parsing must be wrong but I am not sure why.
> > Incidentally while googling I found the
> > module http://docs.python.org/library/pwd.html which I will eventually
> use
> > but I am first curious to fix and understand the problem before I throw
> away
> > this code.
> > Regards
> >
>
> the homedir and usershell parts are paths. Paths will contain slashes.
> The \w character class captures only [A-Za-z0-9_], that is, letters,
> numbers, and the underscore. That means slashes will not match, and so
> the entire match fails.
>
> On another note, the structure of the /etc/passwd file is pretty
> simple, I don't think you need regexes. Simply use split:
>
> users = f.readlines()
> for user in users:
> (username, encrypwd, uid, gid, gecos, homedir, usershell) =
> user.split(':')
>
> HTH,
> Hugo
>
--
Gerhardus Geldenhuis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20111012/caf3e134/attachment.html>
More information about the Tutor
mailing list