簡體   English   中英

使用Python讀取前7天的csv

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM