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"
)。
我正在尝试将 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"
)。