[英]Read csv from previous 7 days in Python
我已經編寫了一個函數來讀取前7天(例如,像這樣的通配符)和路徑的文件。
def i_get_last_week_file(self, par_path, par_file_wildcard, par_datetime):
proc_datetime = par_datetime - timedelta(weeks=1)
logger.info('Processing time: %s', str(proc_datetime))
# file_list = []
while proc_datetime <= par_datetime:
sdate = proc_datetime.strftime('%Y_%m_%d-%H')
for p_file in os.listdir(par_path):
if fnmatch.fnmatch(p_file, par_file_wildcard + sdate + '*.csv'):
self.files_list.append(p_file)
break
return self.files_list
def get_csv_from_local_weekly(self, par_path, par_wildcard_name, par_date=None, par_time=None):
if par_date is None:
par_date = self.file_date
if par_time is None:
par_time = self.file_time
end_datetime = datetime.combine(par_date, par_time)
a = self.i_get_last_day_file(par_path, par_wildcard_name, end_datetime)
for i in a:
try:
df = pd.read_csv(par_path+''+i, index_col=None, header=0, delimiter=';')
self.pandas_list.append(df)
except Exception:
frame = pd.concat(self.pandas_list)
self.files_list = []
self.pandas_list = []
return frame
問題是,僅讀取恰好有7天的文件,但是我需要從今天開始收集前7天的所有文件。
好吧,您需要創建7天范圍,這是一種實現方式:
import datetime
import re
td = datetime.datetime.today()
lastWeek = [(td - datetime.timedelta(i)).strftime('%Y_%m_%d-%H') for i in range(7)]
for p_file in os.listdir(par_path):
dateSearch = re.search('\d{4}_\d{2}_\d{2}-\d{2}', pfile)
if dateSearch:
dateFound = dateSearch.group(0)
if dateFound in lastWeek:
...
當然,您可以將td
更改為日期變量,我只是將其用於測試。
另外,您的proc_datetime
似乎在while
循環內沒有增加,並且如果您引入了增加-您將不需要break
:
while proc_datetime <= par_datetime:
sdate = proc_datetime.strftime('%Y_%m_%d-%H')
for p_file in os.listdir(par_path):
if fnmatch.fnmatch(p_file, par_file_wildcard + sdate + '*.csv'):
self.files_list.append(p_file)
proc_dateimte += datetime.timedelta(days=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.