在python中创建一个带有日期的目录

时间:2019-03-22 09:47:42

标签: python

我试图在python中创建一个带有日期时间扩展名的文件夹,但是每次我遇到以下错误时

  File "create_dir.py", line 7, in <module>
    os.mkdir("/home/xxx/" + time.strftime('%Y%m%d'))
OSError: [Errno 2] No such file or directory: '/home/xxx/20190322'

这是我的代码:

#!/usr/lib/python
import os
import time
os.mkdir("/home/xxx/" + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))

我尝试了堆栈溢出中提供的许多解决方案,但所有解决方案都引发了相同的错误。

5 个答案:

答案 0 :(得分:2)

您可能缺少import datetime,此外,您应该使用makedirs而不是mkdir,因为makedirs() creates all the intermediate directories if they don't exist

import os
import datetime
os.makedirs("C:\\Users\\PycharmProjects\\opencv-basics" + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))

输出(使用路径创建一个文件夹):

C:\Users\PycharmProjects\opencv-basics2019-03-22_14-49-26

答案 1 :(得分:1)

如果os.mkdir或任何中间路径不存在,

OSError将引发xxx。制作任意目录时,请使用os.makedirs,以确保还会生成缺少的目录:

import os
import datetime

os.makedirs("/home/xxx/" + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))

答案 2 :(得分:1)

这是我建议的代码修复程序:

#!/usr/lib/python
import os
import datetime
os.makedirs("/home/xxx/" + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))

这是我对自己所做的解释:

我在您的代码段中看不到日期时间导入,但是,由于您没有提及任何错误,我想您只是粘贴了旧版本的代码。

请确保您正在导入它。

关于主要问题,由于xxx文件夹不存在,因此应使用方法makedirs而不是makedir:

os.makedirs(path[, mode])

如果路径尚不存在,此方法还允许您创建路径。

这里是official documentation

为了简单起见,我还将在StackOverflow上复制相关部分:

  

os.makedirs(name,mode = 0o777,exist_ok = False)递归目录   创建功能。类似于mkdir(),但使所有中级级别   包含叶子目录所需的目录。

     

将模式参数传递给mkdir()以创建叶子   目录;有关如何解释的信息,请参见mkdir()描述。至   设置任何新创建的父目录的文件许可权位   您可以在调用makedirs()之前设置umask。文件权限   现有父目录的位保持不变。

     

如果existing_ok为False(默认值),则如果目标为,则会引发OSError   目录已经存在。

     

注意,如果要创建的路径元素,makedirs()将变得混乱   包括pardir(例如,在UNIX系统上为“ ..”)。此函数处理UNC   正确的路径。

     

3.2版中的新功能:exist_ok参数。

     

版本3.4.1中的更改​​:在Python 3.4.1之前,如果exist_ok为True   并且目录存在,如果出现以下情况,makedirs()仍会引发错误   模式与现有目录的模式不匹配。从此   行为无法安全实现,已在Python中删除   3.4.1。参见bpo-21082。

     

在3.6版中进行了更改:接受类似路径的对象。

     

在3.7版中进行了更改:mode参数不再影响文件   新建的中级目录的权限位。

答案 3 :(得分:1)

首先,您需要import datetime,而不是时间。然后,您要么想使用os.makedirs来创建任何不存在的中间目录,要么想将我认为不是您的真实主目录的xxx更改为它的实际主目录。测试了上面的代码,它运行正常。

答案 4 :(得分:0)

您可以使用 from . import _distributor_init File "C:\Users\AB\Anaconda3\envs\tensorflow_env\Lib\site-packages\numpy\_distributor_init.py", line 34, in <module> from . import _mklinit ImportError: cannot import name '_mklinit'

os.system