需求分析
当创建一个工程文件夹时,需要创建好各式各类的文件夹和文件,这个比较麻烦,所以想到利用Python的os库来辅助
预备知识
代码片段
# 创建文件
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的列表,字典,元组来实现需要创建的文件或者文件夹的类型
-
带有子目录或者文件的文件夹用字典表示
-
平级目录结构用列表表示
- 文件列表使用元组表示
# 示例
tree = {'Sup': ['Son1', {'Son2': ('n1.txt', 'n2.txt')}, {'Son3': ["grandson1", "grandson2"]}]}
下面是在Pycharm下观察到的文件目录结构
利用递归实现文件树的创建
# 代码框架
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', )
]}
通过代码生成的目录树
源码下载
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。