我需要从S3中读取一个csv文件(使用boto)以创建熊猫数据帧。问题是文件名部分为我所知。 我可以使用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进行上述操作?希望问题清楚。谢谢
答案 0 :(得分:0)
检查以下答案: 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))