我试图将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"
)。