the mystery of dirname()

Shashwat Anand anand.shashwat at gmail.com
Fri Feb 19 22:21:00 EST 2010


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 <python at 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 <python at mrabarnett.plus.com<mailto:
>> python at 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100220/4729465a/attachment.html>


More information about the Python-list mailing list