我是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,如果第一个文件退出,则建立一个数据框并停止检查以下日期?
答案 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
,该计数器限制了循环运行的次数,即使没有找到文件,它也可以结束。