我是使用python的新手,我正在尝试为某些文件创建一个新的文件夹结构。我使用os,shutil和copytree来执行以下操作:
原始文件夹结构:
top_folder /
batch1/
1.tif
1.xml
2.tif
2.xml
hello.tif
hello.xml
batch2/
purple.tif
purple.xml
red.tif
red.xml
导致文件夹结构:
top_folder /
batch1/
1/
1.tif
1.xml
2/
2.tif
2.xml
hello/
hello.tif
hello.xml
batch2/
purple/
purple.tif
purple.xml
red/
red.tif
red.xml
我的问题是:我如何使用copytree并让它只复制前两个级别的文件夹,然后copytree停止然后我有自己的代码来转换批处理文件夹中的其余文件夹结构?< / p>
这是我的代码:
import os, shutil, errno
def copy(src, dest):
try:
shutil.copytree(src, dest)
except OSError as e:
if e.errno == errno.ENOTDIR:
#code here to transform folders
else:
break
else:
print('Directory not copied. Error: %s' % e)
答案 0 :(得分:0)
您应该可以使用ignore
的{{1}}参数来帮助解决此问题。基本上你可以使用它来设置copytree
模式,其中包含你想要复制的目录/文件以外的所有模式,然后它应该匹配所有其他模式,从而忽略它们。您可以创建自定义glob
功能,以便按照您的意愿行事。
在此处查看更多详细信息,包括示例代码:https://docs.python.org/2/library/shutil.html#copytree-example