[英]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實例的憑據。
您可以使用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.