【问题标题】:Use Boto to Read File in Pandas (where File Name is partially known)在 Pandas 中使用 Boto 读取文件(其中文件名部分已知)
【发布时间】:2019-04-26 18:01:28
【问题描述】:

我需要从 S3 读取一个 csv 文件(使用 boto)来创建 pandas 数据框。问题是我部分知道文件名。 我可以使用 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 完成上述操作?希望问题很清楚。谢谢

【问题讨论】:

    标签: python-3.x pandas boto


    【解决方案1】:

    检查这个答案: How to read a csv file from an s3 bucket using Pandas in 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))
    

    【讨论】:

    • 在上面的 Q 中,bucket 名称是固定的并且是已知的,而在 Object Key 即文件名中,只有子字符串是已知的,而不是整个文件名。
    猜你喜欢
    • 2015-07-16
    • 2021-01-09
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    相关资源
    最近更新 更多