python 创建递归文件夹结构

python create recursive folder structure

我正在编写一个脚本来自动创建测试 file/folder 结构 - 另一个脚本的输入(根据文件列表仅移动一些文件)。我下面的代码有效,但是是否有更 pythonic 的方法来完成相同的任务?

import os
import shutil

os.chdir('c:/')
if not os.path.exists('c:/pythontest'):
    os.mkdir('c:/pythontest')
else:
    shutil.rmtree('c:/pythontest')
    os.mkdir('c:\pythontest')

os.chdir('c:/pythontest')

for i in range(0,3):
    os.mkdir('folder%d' % i)
    fileName = 'folder%d' % i
    filePath = os.path.join(os.curdir, fileName)
    print filePath
    os.chdir(filePath)
    for j in range(0,3):
        os.mkdir('folder%d_%d' % (i,j))
        fileName = 'folder%d_%d' % (i,j)
        filePath = os.path.join(os.curdir, fileName)
        print str(filePath)
        os.chdir(filePath)
        for k in range(0,3):
            try:
                f = open('file%d_%d_%d.txt' % (i,j,k), 'w')
            except IOError:
                pass
        os.chdir('..')
    os.chdir('..')

我只能建议几个小的样式改进 -- 并在一个函数中移动所有内容,这样可以加快速度。例如:

import os
import shutil

def doit():
    shutil.rmtree('c:/pythontest', ignore_errors=True)
    os.mkdir('c:/pythontest')
    os.chdir('c:/pythontest')

    for i in range(0,3):
        fileName = 'folder%d' % i
        print fileName
        os.mkdir(fileName)
        os.chdir(fileName)
        for j in range(0,3):
            fileName = 'folder%d_%d' % (i,j)
            print fileName
            os.mkdir(fileName)
            os.chdir(fileName)
            for k in range(0,3):
                try:
                    with open('file%d_%d_%d.txt' % (i,j,k), 'w'):
                        pass
                except IOError:
                    pass
            os.chdir('..')
        os.chdir('..')

微小但累积的改进包括避免重复和避免冗余(例如在文件名前加上“./”以形成完全等效的文件路径)。