在Python 3.X中删除具有相同名称的多个子目录

时间:2018-10-08 13:31:04

标签: python python-3.x performance directory

目前,我正在python中进行一些实验,并有一些jupyter笔记本进行评估。我要使用不同的参数多次运行每个实验,所以我的文件夹结构如下所示:

EdmModel

当我存档实验时,我想摆脱 .ipynb_checkpoints 文件夹,因为我认为它们不再是必需的。为此,我编写了一个快速且肮脏的小脚本。

root
  |-- .ipynb_checkpoints
  |-- idea 1
  |      |-- .ipynb_checkpoints
  |      |-- run 1
  |      |      |-- .ipynb_checkpoints
  |      |      |-- results & evaluation
  |      |-- run 2
  |      |      |-- .ipynb_checkpoints
  |      |      ...
  |      ...
  |-- idea 2
  |      |-- .ipynb_checkpoints
  |      ...
  ...

基本上,我创建一个与所需文件夹名称匹配的正则表达式,遍历所有子文件夹,将路径存储在 dir 中,然后再次循环删除所有 .ipynb_checkpoints 文件夹。 该脚本工作正常。但是,我对代码不满意,尤其是两个 for循环

由于我仍在学习编程方法,所以我现在问自己,是否还有更Python化的方法来执行此操作。任何有关如何使代码更快(尽管脚本当前花费不到一秒钟),pythonic或看起来更简洁的评论都值得赞赏。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

In[2]: from glob import glob
In[3]: list(glob('**/.ipynb_checkpoints', recursive=True))
Out[3]: 
['root_dir/.ipynb_checkpoints',
 'root_dir/idea_2/.ipynb_checkpoints',
 'root_dir/idea_1/.ipynb_checkpoints',
 'root_dir/idea_1/run_1/.ipynb_checkpoints',
 'root_dir/idea_1/run_2/.ipynb_checkpoints']

In[4]: from pathlib import Path
In[5]: list(Path().rglob('**/.ipynb_checkpoints'))
Out[5]: 
[PosixPath('root_dir/.ipynb_checkpoints'),
 PosixPath('root_dir/idea_2/.ipynb_checkpoints'),
 PosixPath('root_dir/idea_1/.ipynb_checkpoints'),
 PosixPath('root_dir/idea_1/run_1/.ipynb_checkpoints'),
 PosixPath('root_dir/idea_1/run_2/.ipynb_checkpoints')]