| OLD | NEW |
| 1 """ | 1 """ |
| 2 Path operations common to more than one OS | 2 Path operations common to more than one OS |
| 3 Do not use directly. The OS specific modules import the appropriate | 3 Do not use directly. The OS specific modules import the appropriate |
| 4 functions from this module themselves. | 4 functions from this module themselves. |
| 5 """ | 5 """ |
| 6 import os | 6 import os |
| 7 import stat | 7 import stat |
| 8 | 8 |
| 9 __all__ = ['commonprefix', 'exists', 'getatime', 'getctime', 'getmtime', | 9 __all__ = ['commonprefix', 'exists', 'getatime', 'getctime', 'getmtime', |
| 10 'getsize', 'isdir', 'isfile'] | 10 'getsize', 'isdir', 'isfile'] |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 # pathname component; the root is everything before that. | 80 # pathname component; the root is everything before that. |
| 81 # It is always true that root + ext == p. | 81 # It is always true that root + ext == p. |
| 82 | 82 |
| 83 # Generic implementation of splitext, to be parametrized with | 83 # Generic implementation of splitext, to be parametrized with |
| 84 # the separators | 84 # the separators |
| 85 def _splitext(p, sep, altsep, extsep): | 85 def _splitext(p, sep, altsep, extsep): |
| 86 """Split the extension from a pathname. | 86 """Split the extension from a pathname. |
| 87 | 87 |
| 88 Extension is everything from the last dot to the end, ignoring | 88 Extension is everything from the last dot to the end, ignoring |
| 89 leading dots. Returns "(root, ext)"; ext may be empty.""" | 89 leading dots. Returns "(root, ext)"; ext may be empty.""" |
| 90 # NOTE: This code must work for text and bytes strings. |
| 90 | 91 |
| 91 sepIndex = p.rfind(sep) | 92 sepIndex = p.rfind(sep) |
| 92 if altsep: | 93 if altsep: |
| 93 altsepIndex = p.rfind(altsep) | 94 altsepIndex = p.rfind(altsep) |
| 94 sepIndex = max(sepIndex, altsepIndex) | 95 sepIndex = max(sepIndex, altsepIndex) |
| 95 | 96 |
| 96 dotIndex = p.rfind(extsep) | 97 dotIndex = p.rfind(extsep) |
| 97 if dotIndex > sepIndex: | 98 if dotIndex > sepIndex: |
| 98 # skip all leading dots | 99 # skip all leading dots |
| 99 filenameIndex = sepIndex + 1 | 100 filenameIndex = sepIndex + 1 |
| 100 while filenameIndex < dotIndex: | 101 while filenameIndex < dotIndex: |
| 101 if p[filenameIndex] != extsep: | 102 if p[filenameIndex:filenameIndex+1] != extsep: |
| 102 return p[:dotIndex], p[dotIndex:] | 103 return p[:dotIndex], p[dotIndex:] |
| 103 filenameIndex += 1 | 104 filenameIndex += 1 |
| 104 | 105 |
| 105 return p, '' | 106 return p, p[:0] |
| OLD | NEW |