我在zip文件中有一个很大的图像数据集。我想列出所有的文件,以便我可以使用它们。
一段时间后,我开始使用谷歌云平台,并将我的数据上传到存储桶中。在本地工作时,我使用这段代码来查找数据集中所有文件的文件名。我想做一些类似的事情,这样我就可以在我的笔记本中加载图像。
#files directory in list
matches = []
for root, dirnames, filenames in os.walk("D:\LH\..."):
for filename in fnmatch.filter(filenames, '*.nii'):
matches.append(os.path.join(root, filename))
print(matches[0])由于我的数据集被分成10个不同的zip文件,因此我使用下面这段代码来列出存储桶中的对象:
from google.cloud import storage
def list_blobs(bucket_name):
"""Lists all the blobs in the bucket."""
# bucket_name = "your-bucket-name"
storage_client = storage.Client()
# Note: Client.list_blobs requires at least package version 1.17.0.
blobs = storage_client.list_blobs(bucket_name)
for blob in blobs:
print(blob.name)
bloblist = list_blobs('adni_data')这给了我一个列表,上面有我的文件所在的文件夹。但是我如何使用nilearn库加载这些数据呢?顺便说一句,文件夹由多个文件夹组成,其中包含更多文件夹,在这些文件夹之后,文件将被存储(其他文件夹中的每个文件)。
发布于 2020-02-13 00:56:24
通过使用list_blobs迭代所有的blobs,您只是获得了数据在云存储中的位置的引用--没有实际的图像数据在GCS和您的脚本之间传输。
如果您希望使用nilearn.image.load_img之类的内容加载图像,则需要本地.nii文件的路径,因此您需要执行以下操作:
for blob in blobs:
local_filename = '/tmp/' + blob.name
blob.download_to_filename(local_filename)
nilearn.image.load_img(local_filename)https://stackoverflow.com/questions/60189297
复制相似问题