Используйте Boto для чтения файла в Pandas (где имя файла частично известно) - PullRequest
0 голосов
/ 26 апреля 2019

Мне нужно прочитать CSV-файл из S3 (используя boto), чтобы создать pandas data-frame.Проблема в том, что имя файла частично мне известно.Я могу прочитать файл (где мне известно частичное имя файла) из моей системы, используя glob и pd_read csv.

Как это можно сделать с помощью Boto?

Имя файла - CELLBH_testing_phase1_automated_1234xvy345.csv ', и я просто знаю CELLBH как известное ключевое слово.Строка остатка продолжает изменяться.

Код для чтения файла с использованием boto, где я знаю точное имя файла:

access_key="xxxxxxxxxx"
secret_key="xxxxxxxxxx"

conn=boto.connect_s3(
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    host='xxxxxxxxx',
    is_secure=False,
    calling_format=boto.s3.connection.OrdinaryCallingFormat(),
    )
bucket=conn.get_bucket('npousecase',validate=False)

Test_File='CELLBH.csv'
k=Key(bucket,Test_File)
content=k.get_contents_as_string()
Test=pd.read_csv(StringIO.StringIO(content),sep=";",header=0)

Код для чтения файла 'CELLBH_testing_phase1_automated_1234xvy345.csv', если он установлен в моей системе

data_dir="C:\\users\\adbharga\\Desktop\\Input"
os.chdir(data_dir)

## Reading files from Input Directory

for f in glob.glob('CELLBH*.csv'):
    Test = pd.read_csv(f,sep=";",header=0)

Как я могу сделать выше, используя Boto?Надеюсь, вопрос ясен.Спасибо

1 Ответ

0 голосов
/ 26 апреля 2019

Проверьте этот ответ: Как прочитать CSV-файл из корзины s3 с помощью Pandas в Python Кажется, что вы можете сделать цикл вокруг кода ответов, чтобы получить то, что вы хотите.

как:

for bucket_name in glob.glob('CELLBH*.csv'):

     object_key = 'my_file.csv'
     csv_obj = client.get_object(Bucket=bucket_name, Key=object_key)
     body = csv_obj['Body']
     csv_string = body.read().decode('utf-8')
     df = pd.read_csv(StringIO(csv_string))
...