【发布时间】:2021-04-04 05:51:33
【问题描述】:
情况
我在 Python 3 中编写了一些代码,其中我使用 OS 和 Glob 包在目录中查找最新的 csv 文件并将其转换为 Panda 数据帧。
代码如下:
import pandas as pd
from pathlib import Path
import glob
import os
# LOOK FOR ALL CSVs IN FOLDER AND GET LATEST
fld = '.'
latest_csv_file = glob.glob('/path/to/file/filename.csv')
imported_file = max(latest_csv_file, key=os.path.getctime)
# IMPORT LATEST CV USING PANDAS
imported_file = pd.read_csv(latest_csv_file, dtype={2:'str'})
# REMOVE SPACES FROM COL NAMES AND CONVERT COL NAMES TO LOWER CASE
imported_file.columns = imported_file.columns.str.replace(' ', '')
imported_file.columns = imported_file.columns.str.lower()
这似乎运作良好,但是我需要能够在我的 Lambda 函数中执行相同的操作,该函数会保存来自传入电子邮件的 csv 文件附件。
我已经尝试过什么
bucketname = 'my_bucket'
s3_client = boto3.client('s3')
response = s3_client.list_objects_v2(Bucket = bucketname2, Prefix = 'attachments/')
all = response['Contents']
latest_file = max(all, key=lambda x: x['LastModified'])
print(latest_file)
这将为我提供以下格式的文件名
附件/nolu34lqipv1cl14i0qjebcc1rnqb2ngbnf4ss01-filename.csv
[文件夹]/[original_msg_key]-[filename.csv]
但是,如果我尝试将文件读入 Pandas df,我会得到以下结果
imported_file = pd.read_csv(latest_file, dtype={2:'str'})
模块初始化错误无效的文件路径或缓冲区对象类型:
我理解这是因为 Pandas 需要一个特定的文件路径而不是 'dict' 类型的对象,但看不到如何实现我的目标。
任何帮助表示赞赏。
【问题讨论】:
标签: python-3.x pandas amazon-web-services amazon-s3 boto3