Как передать имя файла в модификатор csv от сторожевого наблюдателя?

У меня есть скрипт, который принимает CSV и изменяет его, фильтруя по дате и возвращая определенные столбцы. Я пытаюсь интегрировать его со сторожевым наблюдателем, чтобы при сбрасывании csv в папку скрипт брал ее и записывал вывод в другую папку. Он работает, когда файл помещается в папку, однако я получаю ошибки, когда изменяю папку в противном случае. Я считаю, что проблема заключается в том, как я определяю имя файла CSV для ввода.

import os
import time
import glob
import pandas as pd
import datetime as dt
from watchdog.observers import Observer
from watchdog.events import RegexMatchingEventHandler

path2obs = r".\input"
path2write = r".\output"

class CSV_transform_IXRS(RegexMatchingEventHandler):
    def csv_process(self, event):
        #### Import CSV ####
        print('Preparing to import csv')
        csv_filename = glob.glob('.\input\*.csv')[0]
        csv_input = pd.read_csv(csv_filename)
        print('imported csv')

        #### Filter CSV by date ####
        csv_filtered = csv_input
        today = dt.date.today()
        today = dt.datetime.strptime('2016-06-02', '%Y-%m-%d') # remove line after testing
        date_filter = 'Score Date'

        csv_filtered[date_filter] = pd.to_datetime(
            csv_input[date_filter], format = '%d%b%Y')

        is_today = csv_filtered[date_filter] == today
        csv_filtered = csv_filtered[is_today]

        #### Remove unnneeded columns ####
        csv_final = csv_filtered[['Additional Specimen Identifier',
                                  'POS MEMBRANE TC %']]

        #### Rename column ####
        csv_final = csv_final.rename(columns={'POS MEMBRANE TC %':'PDL1 Status'})
        print('modifed csv')

        #### Write CSV ####
        print('preparing to write csv')
        csv_path = r'./output/Test_IXRS.csv'
        csv_final.to_csv(csv_path, index=False)
        print('finished writing csv')

    def on_any_event(self, event):
        self.csv_process(event)

if __name__ == '__main__':
    observer = Observer()
    path = path2obs if path2obs and os.path.exists(path2obs) and os.path.isdir(path2obs) else '.'
    observer.schedule(CSV_transform_IXRS(), path=path)
    print("Observer Scheduled")
    observer.start()
    print("Observer Started")
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

0 ответов

Другие вопросы по тегам