实现一个文件/文件夹创建器

由 Zoupers 发布

需求分析

当创建一个工程文件夹时,需要创建好各式各类的文件夹和文件,这个比较麻烦,所以想到利用Python的os库来辅助

预备知识

  1. 对基本的文件系统有个认识,至少要懂.和..什么意思
  2. os.path.exists, os.mkdir
  3. 对Python基本掌握

    开始战斗

代码片段

# 创建文件
if os.path.exists('filename'):
    print("文件已存在")
else:
    f = open('filename', 'w', encoding='utf8')
    f.close()
# 创建文件夹
if os.path.exists('dir_path'):
    print("文件夹已经存在")
else:
    os.mkdir('dir_path')

规范化表示文件树

通过综合使用Python的列表,字典,元组来实现需要创建的文件或者文件夹的类型

  1. 带有子目录或者文件的文件夹用字典表示

  2. 平级目录结构用列表表示

  3. 文件列表使用元组表示
# 示例
tree = {'Sup': ['Son1', {'Son2': ('n1.txt', 'n2.txt')}, {'Son3': ["grandson1", "grandson2"]}]}
下面是在Pycharm下观察到的文件目录结构

20191013060439628.png

利用递归实现文件树的创建

# 代码框架
def _constract(constraction, homepath=''):
    if is_str(constraction):
        create_folder(constraction, homepath)
    elif is_list(constraction):
        for item in constraction:
            _constract(item, homepath)
    elif is_dict(constraction):
        for sup_dir in get_sup_dir(constraction):
            create_folder(sup_dir, homepath)
            _constract(constraction[sup_dir], homepath)
    elif is_tuple(constraction):
        for file in constraction:
            create_file(file, homepath)

其他的大体实现通过之前的代码片段便可以知道了

实际运用

现在假设我已经将这个模块做好了,那么我可以直接通过Python调用这个模块,生成我们想要的目录结构,同时我们可以将常用的目录结构封装一下,这样可以提高效率

# 我在前端开发时常用的目录结构
tree = {'index': [
            {'css': (
                'style.css', 'reset.css'
            )},
            {'js': (
                'index.js',
            )},
            ('index.html', )
        ]}

通过代码生成的目录树 20191013063112524.png

源码下载

点我下载

知识共享许可协议本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。


暂无评论

发表评论