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

Reply via email to