目前,我正在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或看起来更简洁的评论都值得赞赏。感谢您的帮助!
答案 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')]