Python 将 url 转换为目录

Python converting url into directory

我正在尝试将 url 之类的 "www.example.com/images/dog.png" 转换为当前目录中的目录。

所以我得到一个名为 "www.example.com" 的文件夹,在 "images" 里面,最后在里面文件保存为 "dog.png"

我试过使用 urllib.url2pathname(path),但它一直在其开头附加 P:\

您可以使用os.makedirs()创建目录树,但如果最终目录已经存在,那将失败。所以你可以在尝试创建目录树之前测试它是否存在,或者使用 try: ... except OSError:。在 Python 3 中,您可以提供一个 exist_ok 参数来覆盖此行为,请参阅 os.makedirs 的 Python 文档以获取更多信息。

#!/usr/bin/env python

import os

cwd = os.getcwd()

url = "www.example.com/images/dog.png"

fullname = os.path.join(cwd, url)
path, basename = os.path.split(fullname)
if not os.path.exists(path):
    os.makedirs(path)

with open(fullname, 'w') as f:
    f.write('test\n')

如果您的系统不支持包含句点的目录名称,您可以将它们翻译成另一个字符,例如 _,如下所示:

fullname = fullname.replace('.', '_')

(只需在 fullname = os.path.join(cwd, url) 行之后插入)。

正如 jwilner 在评论中提到的那样,使用起来效率更高

path = os.path.dirname

path, basename = os.path.split(fullname) 如果您不需要文件名的基本部分(在本例中 "dog.png")。