基于日期创建Python目录结构

5
我使用以下函数基于今天的日期创建目录:
#!/usr/bin/python
import time, datetime, os

today = datetime.date.today()  

todaystr = today.isoformat()   

os.mkdir(todaystr)

因此,输出结果将会是:
/2015-12-22/

我希望你能帮我调整结构,即按照日期创建目录结构,如下所示。
/2015/12/22
/2015/12/23
etc 

无论何时运行该函数,它都会检查日期并确保文件夹存在,否则将创建它... 有什么提示需要遵循吗?
2个回答

11
考虑使用 strftime 代替。你可以使用它来定义自己喜欢的格式。另外,根据 @Valijon 的描述,您还需要使用 os.makedirs
os.makedirs(time.strftime("/%Y/%m/%d"), exist_ok=True)
你也可以附加一个给定的时间来创建一个过去或未来的时间戳。

你也可以附加一个给定的时间来创建一个过去或未来的时间戳。

time.strftime("/%Y/%m/%d", time.gmtime(time.time()-3600)) # -1 hour

请注意,除非您想直接在根分区下创建文件夹,否则您的路径有些危险。

请注意,默认情况下makedirs如果目录已经存在会引发异常,您可以指定exist_ok=True来避免这种情况,在os.makedirs文档中了解更多信息。


自 Python 3.4 起引入了 pathlib 模块,它提供了一些目录和文件创建功能。

import time
import pathlib
pathlib.Path(time.strftime("/%Y/%m/%d")).mkdir(parents=True, exist_ok=True)

1
你不应该先检查目录是否存在吗?mkdir似乎没有这个功能。 - pushkin
@pushkin 正确,有点累错过了他使用mkdir而不是makedirs的事实。我已经纠正了我的代码。 - Torxed
1
自Python 3.2起,可以在os.makedirs参数中使用exist_okay参数,以避免在目录已经存在时抛出异常。 - schuess
1
@schuess 感谢您指出这一点 :) 我想我们回答了很多问题的人应该定期回顾我们问题的相关性。所以感谢您提醒我修正这个答案! - Torxed

2

只需将os.mkdir更改为os.makedirs

os.makedirs(today.strftime("%Y/%m/%d"))

1
mkdirs 应该是 makedirs 吗?如果是的话,makedirs 如果目录已经存在会引发异常,因此我认为你应该先进行检查。 - pushkin
自3.2版本开始:使用exist_ok来防止os.makedirs在目录已经存在时抛出异常。 - schuess

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接