diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2013-11-18 11:06:43 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-11-18 11:06:43 (GMT) |
commit | fd32fffa5ada8b8be8a65bd51b001d989f99a3d3 (patch) | |
tree | 2b0324a2068af8e9b1d887bb74b426ac9f12ca2b /Lib/glob.py | |
parent | e3010fd740b63df306f878fc872e29d5f6be7487 (diff) | |
download | cpython-fd32fffa5ada8b8be8a65bd51b001d989f99a3d3.zip cpython-fd32fffa5ada8b8be8a65bd51b001d989f99a3d3.tar.gz cpython-fd32fffa5ada8b8be8a65bd51b001d989f99a3d3.tar.bz2 |
Issue #8402: Added the escape() function to the glob module.
Diffstat (limited to 'Lib/glob.py')
-rw-r--r-- | Lib/glob.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/Lib/glob.py b/Lib/glob.py index 1a268a3..e388b5f 100644 --- a/Lib/glob.py +++ b/Lib/glob.py @@ -79,8 +79,8 @@ def glob0(dirname, basename): return [] -magic_check = re.compile('[*?[]') -magic_check_bytes = re.compile(b'[*?[]') +magic_check = re.compile('([*?[])') +magic_check_bytes = re.compile(b'([*?[])') def has_magic(s): if isinstance(s, bytes): @@ -91,3 +91,15 @@ def has_magic(s): def _ishidden(path): return path[0] in ('.', b'.'[0]) + +def escape(pathname): + """Escape all special characters. + """ + # Escaping is done by wrapping any of "*?[" between square brackets. + # Metacharacters do not work in the drive part and shouldn't be escaped. + drive, pathname = os.path.splitdrive(pathname) + if isinstance(pathname, bytes): + pathname = magic_check_bytes.sub(br'[\1]', pathname) + else: + pathname = magic_check.sub(r'[\1]', pathname) + return drive + pathname |