basically I infer that : dirname = path - basename, like for path = '//x', basename = x, hence dirname = '//'
On Sat, Feb 20, 2010 at 8:47 AM, MRAB <pyt...@mrabarnett.plus.com> wrote: > Shashwat Anand wrote: > >> But this is posixpath, right ? So '//x' like path will not occur as far as >> I guess ? >> >> Can you guarantee that? It's safer to just leave it as it is, just in > case! :-) > > > On Sat, Feb 20, 2010 at 8:35 AM, MRAB <pyt...@mrabarnett.plus.com<mailto: >> pyt...@mrabarnett.plus.com>> wrote: >> >> Shashwat Anand wrote: >> >> In the following code sample : >> >> def dirname(p): >> >> """Returns the directory component of a pathname""" >> i = p.rfind('/') + 1 >> >> head = p[:i] >> if head and head != '/'*len(head): >> >> head = head.rstrip('/') >> >> return head >> >> def dirname1(p): >> i = p.rfind('/') + 1 >> >> head = p[:i] >> if head != '/': >> >> return head.rstrip('/') return head >> >> if __name__ == "__main__": >> p1 = '/Users/l0nwlf/Desktop' >> >> p2 = './' >> p3 = '/' >> p4 = '.' >> >> print dirname(p1), dirname1(p1) >> >> print dirname(p2), dirname1(p2) >> >> print dirname(p3), dirname1(p3) >> >> print dirname(p4), dirname1(p4) >> >> OUTPUT: >> >> /Users/l0nwlf /Users/l0nwlf >> . . >> / / >> >> dirname() is a function taken from /Lib/posixpath.py. However i >> did not quite understood the usage of "if head and head != >> '/'*len(head):" and replaced it with more obvious way in >> dirname1(). >> >> Am I right to do so ? Is dirname1() more pythonic ? Did I missed >> any edge cases here ? >> >> What if the path is '//x'? The current dirname would return '//', >> whereas dirname1 would return ''. >> >> > -- > http://mail.python.org/mailman/listinfo/python-list >
-- http://mail.python.org/mailman/listinfo/python-list