选择正确的CSV文件

时间:2019-11-14 14:40:38

标签: python file csv picking

我是python的新手。 我希望python从文件夹中选择正确的csv文件。 我想比较最实际的文件(t)和昨天的文件(t-1)的CDS点差。

因此,代码必须选择今天的文件和昨天的文件。 “昨天”的文件可以是昨天或前天的文件。

下面的代码标识了文件,但是创建了昨天的数据框以及代码中的最后日期。

today = dt.date.today()
d1 = today.strftime("%Y%m%d")
print(d1)
t2 = today - timedelta(days = 1) 
t3 = today - timedelta(days = 2) 
t4 = today - timedelta(days = 3) 
t2 = t2.strftime("%Y%m%d")
t3 = t3.strftime("%Y%m%d")
t4 = t4.strftime("%Y%m%d")
print(t2)
print(t3)
print(t4)

if (os.path.exists(path'+d1+'.csv')):
    dataframe2 = pd.read_csv(path'+d1+'.csv')
if (os.path.exists(path-'+t2+'.csv')):
    dataframe2 = pd.read_csv(path'+t2+'.csv')
if (os.path.exists(path'+t3+'.csv')):
    dataframe2 = pd.read_csv(path'+t3+'.csv')
if (os.path.exists(path-'+t4+'.csv')):
    dataframe2 = pd.read_csv(path'+t4+'.csv')

如何告诉python,如果第一个文件退出,则建立一个数据框并停止检查以下日期?

1 个答案:

答案 0 :(得分:0)

一种更灵活的方法是使用循环,该循环减少日期直到找到文件,然后停止:

t = dt.date.today()
d = today.strftime("%Y%m%d")
max_iter = 100
found = False
while max_iter > 0:
    print(d)
    if os.path.exists(path+d+'.csv'):
        found = True
        break
    t = t - timedelta(days = 1)
    d = t.strftime("%Y%m%d")
    max_iter = max_iter - 1

if found:
    dataframe = pd.read_csv(path+d+'.csv')
else:
    print("No valid file found.")

我还添加了一个计数器max_iter,该计数器限制了循环运行的次数,即使没有找到文件,它也可以结束。