从 repo 中的 Jupyter Notebook 迭代 GitHub repo 中的文件

Iterate over files in GitHub repo from a Jupyter Notebook inside the repo

我的 GitHub 存储库中有这个文件夹:

在这个 repo 中,我有一个 Jupyter notebook,我使用 MyBinder 将这个 notebook 渲染到一个网络应用程序中。在笔记本中,我遍历 rasters_as_int 文件夹中的文件并从文件名中提取日期。所有文件都具有相同的名称模式,例如,其中一个文件的名称为:MODAL2_M_CLD_FR_2019-06-01_rgb_3600x1800.FLOAT.TIFF.

在以前版本的回购中,没有文件夹,所有这些文件都在回购“主页”上(抱歉,如果这不是它的正确名称),所以在笔记本中,我使用了glob 包迭代它们(并使用 Python split 方法提取日期):

rasters_list = glob.glob('*TIFF*')

而且效果很好。

但是,当这些文件位于 rasters_as_in 文件夹中时,我似乎找不到如何迭代。 我尝试了很多选项,但似乎没有任何效果:

rasters_list = glob.glob('rasters_as_int/*TIFF*')
rasters_list = glob.glob('/rasters_as_int/*TIFF*')
rasters_list = glob.glob('./rasters_as_int/*TIFF*')
rasters_list = glob.glob('rasters_as_int\*TIFF*')
rasters_list = glob.glob('\rasters_as_int\*TIFF*')
rasters_list = glob.glob('.\rasters_as_int\*TIFF*')
rasters_list = glob.glob('rasters_as_int/*')
rasters_list = glob.glob('/rasters_as_int/*')
rasters_list = glob.glob('./rasters_as_int/*')
rasters_list = glob.glob('.\rasters_as_int\*')
rasters_list = glob.glob('/rasters_as_int/*',recursive=True)

你的第三个选项没问题。

我刚刚测试了它和 https://mybinder.org/v2/gh/ran-pelta/CloudTool/7bd082bb3cf7b2e202dc43841fc60e7796c7402a 的变体,它在您删除 rasters_as_int 目录之前使用了 repo。示例 glob 可以提供我接下来显示的输出:

rasters_list = glob.glob('./rasters_as_int/*TIFF')

当我将 rasters_list 单独放在后续单元格中时,我得到了这样的东西(为简洁起见被 ... 截断):

['./rasters_as_int/MODAL2_M_CLD_FR_2020-01-01_rgb_3600x1800.FLOAT.TIFF',
 './rasters_as_int/MODAL2_M_CLD_FR_2019-06-01_rgb_3600x1800.FLOAT.TIFF',
 './rasters_as_int/MODAL2_M_CLD_FR_2020-03-01_rgb_3600x1800.FLOAT.TIFF',
 './rasters_as_int/MODAL2_M_CLD_FR_2020-12-01_rgb_3600x1800.FLOAT.TIFF', ... 
]

(也请参见下面的图片。我现在添加它以获得更多上下文,因为我最终添加了一张显示情节的图像。)

您可能没有考虑文件名拆分中的 ./rasters_as_int/ 部分?因为看起来您将其从 date = pd.to_datetime(i.split('_')[4]) # this is if the TIFFs are in current folder 更改为 date = pd.to_datetime(tail.split('_')[4]).

并且使用该 glob 命令,笔记本从 here using what is in rasters_as_int. I see the dates along the plot.

开始工作

这里也显示了我从该 glob 中看到的图像,因为它在上下文中显示了您的其他代码: