python创建递归文件夹结构

时间:2015-01-06 04:15:56

标签: python operating-system shutil

我正在编写一个脚本来自动创建测试文件/文件夹结构 - 输入另一个脚本(根据文件列表仅移动一些文件)。我的代码可以使用,但是有更多的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('..')

1 个答案:

答案 0 :(得分:0)

我只能建议几个小的风格改进 - 并在一个功能中移动所有东西,这会加快速度。 E.g:

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('..')

次要但累积性的改进包括避免重复和避免冗余(例如在文件名之前添加'。/'以制作完全相同的文件路径)。