簡體   English   中英

如何使用Watson Studio獲取IBM COS Bucket中的文件列表

[英]How to get a List of Files in IBM COS Bucket using Watson Studio

我有一個可用的Python腳本,用於整合我想要移動到Watson Studio項目的多個xlsx文件。 我當前的代碼使用路徑變量傳遞給glob ...

path = '/Users/Me/My_Path/*.xlsx' files = glob.glob(path)

由於Watson Studio中的憑據特定於單個文件,因此如何獲取IBM COS存儲桶中所有文件的列表? 我也想知道如何創建文件夾來分隔存儲桶中的文件?

IBM Cloud Object Storage(COS)中的憑據是COS實例級別,而不是單個文件級別。 每個COS實例可以包含任意數量的存儲桶,每個存儲桶包含文件。 您可以從Bluemix控制台獲取COS實例的憑據。

https://console.bluemix.net/docs/services/cloud-object-storage/iam/service-credentials.html#service-credentials

您可以使用boto3 python包來訪問這些文件。 https://boto3.amazonaws.com/v1/documentation/api/latest/index.html

import boto3
s3c = boto3.client('s3', endpoint_url='XXXXXXXXX',aws_access_key_id='XXXXXXXXXXX',aws_secret_access_key='XXXXXXXXXX')
s3.list_objects(Bucket=bucket_name, Prefix=file_path)
s3c.download_file(Filename=filename, Bucket=bucket, Key=objectname)
s3c.upload_file(Filename=filename, Bucket=bucket, Key=objectname)

Watson Studio雲提供了一個幫助程序庫,名為project-lib,用於處理Cloud Object Storage實例中的對象。 請查看本文檔,了解如何在Python中使用該軟件包: https//dataplatform.cloud.ibm.com/docs/content/analyze-data/project-lib-python.html

對於您的具體問題, get_files()應該做您需要的。 這將返回存儲桶中所有文件的列表,然后您可以進行模式匹配以僅保留您需要的內容。 根據此篩選列表,您可以對列表中的每個file_name進行迭代並使用get_file(file_name)

要在存儲桶中創建“文件夾”,您需要遵循文件的命名約定來創建“偽文件夾”。 例如,如果要創建資產的“數據”文件夾,則應使用data/為屬於此文件夾的對象添加文件名前綴。

可能有更多的pythonic方式來編寫這個但是這里是我使用project-lib編寫的代碼,每個@Greg Filla提供的答案

files = []  # List to hold data file names

# Get list of all file names in storage bucket
all_files = project.get_files()  # returns list of dictionaries

# Create list of file names to load based on prefix
for f in all_files:
    if f['name'][:3] == DataFile_Prefix: 
        files.append(f['name'])

print ("There are " + str(len(files)) + " data files in the storage bucket.")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM