我试图在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'))
我尝试了堆栈溢出中提供的许多解决方案,但所有解决方案都引发了相同的错误。
答案 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])
如果路径尚不存在,此方法还允许您创建路径。
为了简单起见,我还将在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