为了账号安全,请及时绑定邮箱和手机立即绑定

从 csv 文件中读取数据,同时密切关注文件夹的更改

从 csv 文件中读取数据,同时密切关注文件夹的更改

慕桂英546537 2022-06-07 17:10:06
我有一个代码可以监视文件夹中的任何更改。它会检查新添加和删除的文件,并在发生此类情况时及时显示文件名。这是我的代码: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))  if removed: print ("Removed: ", ", ".join (removed))  before = after现在我想在这段代码中再包含一件事,我想读取正在添加到文件夹中的文件中的数据。我尝试通过将字典转换为 DataFrame 使用from_dict然后使用pandas读取 csv 使用read_csv但它似乎不起作用。这是我更新的代码: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))  df = pd.DataFrame.from_dict(path_to_watch, orient = 'index')  df1 = pd.read_csv(df)  if removed: print ("Removed: ", ", ".join (removed))  before = after如果你能帮助我得到想要的结果,我将不胜感激。
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超13个赞

尝试这个,


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


查看完整回答
反对 回复 2022-06-07
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

首先,最好使用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


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号