Как получить список файлов в IBM COS Bucket с помощью Watson Studio - PullRequest
0 голосов
/ 16 января 2019

У меня есть рабочий скрипт Python для объединения нескольких файлов xlsx, которые я хочу переместить в проект Watson Studio. Мой текущий код использует переменную пути, которая передается glob ...

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

Поскольку учетные данные в Watson Studio относятся к отдельным файлам, как мне получить список всех файлов в моем хранилище IBM COS? Мне также интересно, как создавать папки для разделения файлов в моем хранилище?

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Облако Watson Studio предоставляет вспомогательную библиотеку с именем project-lib для работы с объектами в вашем экземпляре Cloud Object Storage. Посмотрите на эту документацию для использования пакета в Python: https://dataplatform.cloud.ibm.com/docs/content/analyze-data/project-lib-python.html

По вашему конкретному вопросу get_files() должен делать то, что вам нужно. Это вернет список всех файлов в вашей корзине, затем вы сможете выполнить сопоставление с образцом, чтобы оставить только то, что вам нужно. Основываясь на этом отфильтрованном списке, вы можете выполнить итерацию и использовать get_file(file_name) для каждого file_name в вашем списке.

Чтобы создать «папку» в вашем ведре, вы должны следовать соглашению об именовании файлов для создания «псевдо папки». Например, если вы хотите создать папку ресурсов «data», вам следует добавить префикс имен файлов для объектов, принадлежащих этой папке, с data/.

0 голосов
/ 16 января 2019

Вероятно, есть более питонский способ написания этого, но вот код, который я написал, используя 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.")
0 голосов
/ 16 января 2019

Учетные данные в IBM Cloud Object Storage (COS) находятся на уровне экземпляра COS, а не на уровне отдельных файлов. Каждый экземпляр COS может иметь любое количество сегментов, в каждом из которых содержатся файлы. Вы можете получить учетные данные для экземпляра COS из консоли Bluemix.

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)
...