⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 macurl2p.py

📁 minimal python variant for small footprint apps like embedded apps
💻 PY
字号:
"""Mac specific module for conversion between pathnames and URLs.Do not import directly, use urllib instead."""import stringimport urllibimport osdef url2pathname(pathname):    "Convert /-delimited pathname to mac pathname"    #    # XXXX The .. handling should be fixed...    #    tp = urllib.splittype(pathname)[0]    if tp and tp <> 'file':        raise RuntimeError, 'Cannot convert non-local URL to pathname'    components = string.split(pathname, '/')    # Remove . and embedded ..    i = 0    while i < len(components):        if components[i] == '.':            del components[i]        elif components[i] == '..' and i > 0 and \                                  components[i-1] not in ('', '..'):            del components[i-1:i+1]            i = i-1        elif components[i] == '' and i > 0 and components[i-1] <> '':            del components[i]        else:            i = i+1    if not components[0]:        # Absolute unix path, don't start with colon        rv = string.join(components[1:], ':')    else:        # relative unix path, start with colon. First replace        # leading .. by empty strings (giving ::file)        i = 0        while i < len(components) and components[i] == '..':            components[i] = ''            i = i + 1        rv = ':' + string.join(components, ':')    # and finally unquote slashes and other funny characters    return urllib.unquote(rv)def pathname2url(pathname):    "convert mac pathname to /-delimited pathname"    if '/' in pathname:        raise RuntimeError, "Cannot convert pathname containing slashes"    components = string.split(pathname, ':')    # Remove empty first and/or last component    if components[0] == '':        del components[0]    if components[-1] == '':        del components[-1]    # Replace empty string ('::') by .. (will result in '/../' later)    for i in range(len(components)):        if components[i] == '':            components[i] = '..'    # Truncate names longer than 31 bytes    components = map(_pncomp2url, components)    if os.path.isabs(pathname):        return '/' + string.join(components, '/')    else:        return string.join(components, '/')        def _pncomp2url(component):	component = urllib.quote(component[:31], safe='')  # We want to quote slashes	return component	def test():    for url in ["index.html",                "bar/index.html",                "/foo/bar/index.html",                "/foo/bar/",                "/"]:        print `url`, '->', `url2pathname(url)`    for path in ["drive:",                 "drive:dir:",                 "drive:dir:file",                 "drive:file",                 "file",                 ":file",                 ":dir:",                 ":dir:file"]:        print `path`, '->', `pathname2url(path)`if __name__ == '__main__':    test()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -