Как передать имя файла в модификатор 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()