我们编程很多时候是希望批量处理大量文件,那么第一步就是要能够批量地读取这些文件。

举个例子,我们某次实验,设置了不同的条件,还有不同的时间,产生了一系列的数据文件。其文件夹路径结构是 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。这个方法的特点是能够遍历指定目录下所有的文件,即便指定类型的文件的层级不一致,也都能找到。

该部分仅登录用户可见

最后修改:2024 年 08 月 24 日
请大力赞赏以支持本站持续运行!