|
|
@ -312,17 +312,17 @@ def sanitize_path(s): |
|
|
|
"""Sanitizes and normalizes path on Windows""" |
|
|
|
if sys.platform != 'win32': |
|
|
|
return s |
|
|
|
drive, _ = os.path.splitdrive(s) |
|
|
|
unc, _ = os.path.splitunc(s) |
|
|
|
unc_or_drive = unc or drive |
|
|
|
norm_path = os.path.normpath(remove_start(s, unc_or_drive)).split(os.path.sep) |
|
|
|
if unc_or_drive: |
|
|
|
drive_or_unc, _ = os.path.splitdrive(s) |
|
|
|
if sys.version_info < (2, 7) and not drive_or_unc: |
|
|
|
drive_or_unc, _ = os.path.splitunc(s) |
|
|
|
norm_path = os.path.normpath(remove_start(s, drive_or_unc)).split(os.path.sep) |
|
|
|
if drive_or_unc: |
|
|
|
norm_path.pop(0) |
|
|
|
sanitized_path = [ |
|
|
|
path_part if path_part in ['.', '..'] else re.sub('(?:[/<>:"\\|\\\\?\\*]|\.$)', '#', path_part) |
|
|
|
for path_part in norm_path] |
|
|
|
if unc_or_drive: |
|
|
|
sanitized_path.insert(0, unc_or_drive + os.path.sep) |
|
|
|
if drive_or_unc: |
|
|
|
sanitized_path.insert(0, drive_or_unc + os.path.sep) |
|
|
|
return os.path.join(*sanitized_path) |
|
|
|
|
|
|
|
|
|
|
|