我有一个非常大的永久Dropbox链接,其中有6个文件夹。每个文件夹都有以下文件组织(我只指定了文件夹1的组织,其中-代表文件夹,* 代表文件,3行圆点表示继续相同的模式,但所有主文件夹和子文件夹的组织方式都是相同的)。
- 文件夹1
- 12390r3398
- -20253023432
- *A2308432.edf
- *calibration.xlsx
- *EventList.xlsx
- *Stage.csv
- -20253023789
- *A2308449.edf
- *calibration.xlsx
- *EventList.xlsx
- *Stage.csv
……
- -202530243808
- *A23086903.edf
- *calibration.xlsx
- *EventList.xlsx
- *Stage.csv
- -12390r4490
- -20258900023
- *A23489001.edf
- *calibration.xlsx
- *EventList.xlsx
- *Stage.csv
……
- -20258978290
- *A23489876.edf
- *calibration.xlsx
- *EventList.xlsx
- *Stage.csv . .
- 文件夹2 . . . . . .
- 文件夹3 . . . . . .
- 文件夹4 . . . . . .
- 文件夹5 . . . . . .
- 文件夹6 . . . . . .
现在,我写了一个函数,我将调用myfunction
。myfunction
的输入是一个.edf文件和一个.xlsx文件。myfunction
的输出是一个6列数组,行数取决于输入文件。
我想将myfunction
应用于此Dropbox链接中每个最小子文件夹中的所有文件对。例如,我想有arr1 = myfunction('A2308432.edf', 'EventList.xlsx')
的文件对位于子文件夹'20253023432'上面,然后我想arr2 = myfunction('A2308449.edf', 'EventList.xlsx')
的文件对位于子文件夹'20253023789'依此类推,直到文件夹3中最后一个最小的子文件夹(请注意,即使每个子文件夹都包含一个‘EventList.xlsx‘文件,这些Excel文件中的每一个尽管名称相同,但实际上是不同的)我不能直接下载这个Dropbox链接,甚至3/6主文件夹中的任何一个,或者甚至是主文件夹的某个子文件夹,因为它们太大了(整个Dropbox大约有100 GB的数据)。
有没有人知道我如何在MATLAB中通过直接从Dropbox链接调用所有这些文件对myfunction
来实现这一点,或者如果我可以迭代地从Dropbox下载文件对,然后在文件对上运行我的函数,然后在移动到下一个文件对之前删除文件对?也许另一种选择是将Dropbox文件夹移动到某个AWS云并从那里进行操作,但我也有同样的问题,如何通过存储在AWS中的数据在MATLAB上完成所有这些。如果你能提供代码来帮助,我会非常感激,因为我没有系统背景。谢谢。
我尝试下载数据并直接在数据子集上运行函数。我使用MATLAB dir
命令做到了这一点,它工作了,但数据太多了,对所有数据都这样做是荒谬的。
我还研究了MATLAB的Dropbox API,但在使用这些API时不断遇到错误(我的系统背景非常差)。
1条答案
按热度按时间h9vpoimq1#
Dropbox API确实提供了列出文件夹的Dropbox共享链接的内容以及基于文件夹的共享链接从文件夹下载任何特定文件的功能。
要列出文件夹的内容,您应该使用/2/files/list_folder[/continue]。在调用/2/files/list_folder时,首先在
shared_link.url
字段中提供文件夹的共享链接。当您需要列出特定的子文件夹时,还可以将path
设置为链接文件夹中子文件夹的相对路径。要下载文件夹中的任何特定文件,您应该使用/2/sharing/get_shared_link_file。将
url
设置为文件夹的共享链接,并将path
设置为链接文件夹中文件的相对路径。您可以根据需要使用自定义逻辑编写代码,并在需要时调用这些Dropbox API端点。