我正在尝试将类似"www.example.com/images/dog.png"
的网址转换为当前目录中的目录。
所以我在"www.example.com"
内找到一个名为"images"
的文件夹,最后在文件中保存为"dog.png"
我已尝试使用urllib.url2pathname(path)
,但会不断将P:\
添加到其开头。
答案 0 :(得分:2)
您可以使用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"
。