我们编程很多时候是希望批量处理大量文件,那么第一步就是要能够批量地读取这些文件。
举个例子,我们某次实验,设置了不同的条件,还有不同的时间,产生了一系列的数据文件。其文件夹路径结构是 condition/timepoint/file
。
如果文件夹和文件名比较规范,我们可以使用 glob
函数结合通配符 *
来快速读取所有的文件。
from glob import glob
fps = glob("*/*/*.czi")
上述代码就能匹配到不同条件下,不同时间点得到的 czi 为后缀的数据文件。但需要注意的是:
- 路径的层级必须保持一致。例如,
*/*/*.czi
能够匹配到A/12h/3.czi
这个文件,但是匹配不到A/1.czi
或者A/12h/f/3.czi
这两个存放在不同目录层级的文件。所以保存实验数据需要遵守一致的规范,越规范越容易自动化处理。 - 返回的是一整个列表。为了维持按原有的条件和时间点的分组,还需要后续的字符串处理转变为字典结构。
- 返回列表中的文件顺序未必与你规范命名后的一致,如果你的后续批处理依赖特定的文献顺序,还有再 sort 一下。
另外还有一种方法,是使用 os 模块自带的方法,例如 os.walk
。这个方法的特点是能够遍历指定目录下所有的文件,即便指定类型的文件的层级不一致,也都能找到。
该部分仅登录用户可见
此处评论已关闭