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