Читайте данные из файла CSV, следя за изменениями в папке. - PullRequest
1 голос
/ 25 сентября 2019

У меня есть код, который следит за папками для любых изменений.Он проверяет вновь добавленные и удаленные файлы и быстро отображает имя файла, когда такие случаи происходят.Это мой код:

import os, time
import pandas as pd
import glob
path_to_watch = os.path.abspath('C:/Folder for violation csv/')
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
while 1:
  time.sleep (2)
  after = dict ([(f, None) for f in os.listdir (path_to_watch)])
  added = [f for f in after if not f in before]
  removed = [f for f in before if not f in after]
  if added: print ("Added: ", ", ".join (added))
  if removed: print ("Removed: ", ", ".join (removed))
  before = after

Теперь я хочу включить еще одну вещь в этот код, я хочу прочитать данные в файле, который добавляется в папку.Я попробовал это, преобразовав словарь в DataFrame, используя from_dict, а затем используя pandas, чтобы прочитать csv, используя read_csv, но, похоже, он не работает.Это мой обновленный код:

import os, time
import pandas as pd
import glob
path_to_watch = os.path.abspath('C:/Folder for violation csv/')
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
while 1:
  time.sleep (2)
  after = dict ([(f, None) for f in os.listdir (path_to_watch)])
  added = [f for f in after if not f in before]
  removed = [f for f in before if not f in after]
  if added: 
    print ("Added: ", ", ".join (added))
  df = pd.DataFrame.from_dict(path_to_watch, orient = 'index')
  df1 = pd.read_csv(df)
  if removed: print ("Removed: ", ", ".join (removed))
  before = after

Если бы вы могли помочь мне получить желаемый результат, я был бы очень признателен.

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

попробуйте,

import os, time
import pandas as pd
import glob
path_to_watch = os.path.abspath('C:/Folder for violation csv/')
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
while 1:
  time.sleep (2)
  after = dict ([(f, None) for f in os.listdir (path_to_watch)])
  added = [f for f in after if not f in before]
  removed = [f for f in before if not f in after]
  if added: 
    print ("Added: ", ", ".join (added))
  for file_ in added:
    df = pd.read_csv(os.path.join(path_to_watch, file_))
  if removed: print ("Removed: ", ", ".join (removed))
  before = after
1 голос
/ 25 сентября 2019
  • Для начала, лучше использовать пакет pathlib для доступа к файловой системе.
  • Используйте set для сбора имен файлов.
from pathlib import Path

path_to_watch = Path('C:/Folder for violation csv/')
before = set(path_to_watch.glob('**/*'))
while 1:
  time.sleep (2)
  after = set(path_to_watch.glob('**/*')
  added = after - before
  removed = before - after
  for f in added:
     df = pd.read_csv(f)
  before = after

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...