【问题标题】:grabbing all .nc files from URL to get data using matlab从 URL 抓取所有 .nc 文件以使用 matlab 获取数据
【发布时间】:2014-02-28 09:11:30
【问题描述】:

我想从 URL 获取所有 .nc 文件,以使用 matlab 获取和读取数据。但是,文件名总是很长,并且在所有文件中都不同。 例如,我有

    url = 'http://sourcename/filename.nc'

源名称总是相同的,但是文件名很长而且变化很大,所以我想只使用 * 来获取 url 中的任何 .nc 文件

例如

    url = 'http://sourcename/*.nc'

但这不起作用,我猜我需要得到确切的名称 - 所以我不确定在这里做什么?

另一方面,获取每个文件的名称并记录它对我来说也很有趣,但也不知道该怎么做。

提前非常感谢!!

【问题讨论】:

    标签: matlab url netcdf


    【解决方案1】:

    HTTP 没有实现文件系统抽象。这意味着您请求的每个 URL 都可以以完全不同的方式处理。在许多情况下,也无法从父级(即目录列表)获取允许的 URL 列表。

    http://sourcename/ 实际上可能会返回一个包含文件列表的索引文档。在这种情况下,首先获取该文档。然后您必须解析内容以提取文件列表。然后,您可以遍历这些文件,为每个文件形成新的 URL,并按顺序获取它们。

    【讨论】:

    • mm 好的 - 感谢您的 cmets。虽然你能在第二部分更明确一点吗? '在这种情况下,首先获取该文档。然后您必须解析内容以提取文件列表。然后你可以遍历这些文件,为每个文件形成新的 URL,并按顺序获取它们。'
    • 你将如何在 matlab 中实现这个?
    • 让我换个说法。当您手动放置文件时,您从哪里获得文件列表?您如何知道每个数据集的 filename.nc 是什么?一旦您描述了这一点,我们或许可以帮助您实现自动化。
    【解决方案2】:

    如果您有一个文本文件中的文件名列表,您可以使用wget 实用程序来处理该文件并获取所有列出的文件。该文件的格式如下:

    http://url.com/file1.nc
    http://url.com/file2.nc
    (etc)
    

    然后您将调用wget,如下所示:

    $ wget -i url-file.txt
    

    或者,如果文件都位于 Web 服务器上的同一目录中,您可以使用 wget 递归获取文件,例如:

    $ wget -r -l1 http://url.com/directory
    

    -r 标志表示递归,-l1 标志表示递归时不超过 1 级。

    此解决方案是 Matlab 外部的,但是一旦您下载了所有文件,您就可以在本地使用它们。

    wget 是 linux 系统上相当标准的实用程序。它也可用于 OSX 和 Windows。 wget 主页在这里:https://www.gnu.org/software/wget/

    【讨论】:

      猜你喜欢
      • 2018-04-24
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多