我正在尝试编写一个复制fotos并根据日期重命名它们的程序,我想自动将照片复制到给定的子文件夹,即“\ ... \ 2014-09-28 \ 13:34.jpg”。复制到现有文件夹效果很好,但至少shutils copy2命令似乎无法动态创建那些不存在的子文件夹,即它引发
IOError:[Errno 2]没有这样的文件或目录:'C:\ Users \ Roman \ Desktop \ Foddos!\ Tmp \ 2010-03 \ 13(0).jpg'
(请注意,2010-13子文件夹不存在)是否存在任何方法?
PS:整个程序与os.rename配合得很好。但我不想移动我的文件(并将它们复制到临时目录,而不是使用重命名似乎是一个非常讨厌的解决方法)
PPS:我在Windows 7上使用Python 2.7.6
答案 0 :(得分:5)
简单的解决方案是首先检查目录是否存在os.path.isdir
,如果没有创建它。
if not os.path.isdir(os.path.join(parent, subdir)):
os.mkdir(os.path.join(parent, subdir))
# Your normal method here
您也可以使用os.makedirs
创建任何中间目录,但请注意,如果已存在任何目录,此方法将引发异常:
递归目录创建功能。像mkdir(),但所有 包含叶子目录所需的中级目录。 如果leaf目录已存在,则引发错误异常 无法创建。默认模式为0777(八进制)。在某些系统上, 模式被忽略。在使用它的地方,首先是当前的umask值 掩盖了。