我希望将下载到我的downloads文件夹的csv文件拉入pandas数据框。每次下载时,都会在字符串末尾添加一个数字,因为文件名已在文件夹中。例如,“ transactions(44).csv”位于该文件夹中,下次下载该文件时,其名称为“ transactions(45).csv”。
我已经查看了glob库或使用os库打开了我的下载文件夹中的最新文件。我无法提出解决方案。我在想我需要某种方式连接到下载路径,找到所有csv文件类型,其中包含字符串“ transactions”的文件,并在完整的文件名字符串中获取最大数量的文件。
list(csv.reader(open(path + '/transactions (45).csv'))
我希望这样的path + '/%transactions%' + 'max()' + '.csv'
我知道最终答案将完全不同,但是我希望这是有道理的。
答案 0 :(得分:1)
假设格式为“ transactions (number).csv
”,请尝试以下操作:
import os
import numpy as np
files=os.listdir('Downloads/')
tranfiles=[f for f in files if 'transactions' in f]
现在,您的目标文件如下:
target_file=tranfiles[np.argmax([int(t.split('(')[1].split(')')[0]) for t in tranfiles])]
按如下所示读取所需文件:
df=pd.read_csv('Downloads/'+target_file)
答案 1 :(得分:1)
一种选择是使用正则表达式提取数值最大的文件ID,然后构造一个新文件名:
import re
import glob
last_id = max(int(re.findall(r" \(([0-9]+)\).csv", x)[0]) \
for x in glob.glob("transactions*.csv"))
name = f'transactions ({last_id}).csv'
或者,找到最新的文件directly by its modification time
请注意,您不应使用CSV阅读器来读取Pandas中的CSV文件。请改用pd.read_csv()
。