我正在尝试将像 "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"
)。
关于Python将url转换为目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29717424/