从 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))

  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

如果你能帮助我得到想要的结果,我将不胜感激。


慕桂英546537
浏览 141回答 2
2回答

红颜莎娜

尝试这个,import os, timeimport pandas as pdimport globpath_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

斯蒂芬大帝

首先,最好使用pathlib包来访问文件系统。使用set收集文件名。from pathlib import Pathpath_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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python