通过MS Excel编辑和保存CSV文件时,希望Python脚本将文件更新为新保存的版本

pdsfdshx  于 2022-12-15  发布在  Python
关注(0)|答案(1)|浏览(122)

我有一个24/7运行的python脚本,假设这个脚本读取一个带有Pandas的data.csv文件。
CSV文件= pd.read_csv(“数据. csv”,编码=“utf-8”)
基本上,每一分钟,我都希望数据.csv文件更新到当前保存的版本。例如:假设我通过MS-Excel在data.csv文件中创建(并保存)了一个新行,我希望python脚本能够检测到有一个新添加的行,而无需重新运行脚本。
每当我通过MS-Excel编辑和保存数据.csv文件时,除非我关闭并重新运行脚本,否则python脚本不会检测到编辑。我希望脚本自动检测对csv的更改(每60秒)。
我不是通过Python编辑csv文件,而是通过MS-Excel用户界面编辑csv文件。每当我编辑和保存csv文件时,我希望Python脚本更新为新保存的版本,而不必结束并重新运行脚本。

hm2xizp9

hm2xizp91#

如果要仅在文件修改时每60秒更新一次DataFrame:

import time
import os
import pandas as pd

SECONDS_BETWEEN_UPDATES = 60

print('csv_file updater started, press ctrl+c to exit')

try:
    last_modified_time = 0
    while True:
        new_modified_time = os.path.getmtime('data.csv')
        if new_modified_time > last_modified_time:
            csv_file = pd.read_csv('data.csv', encoding='utf-8')
            last_modified_time = new_modified_time
            print('Dataframe Updated')
        
        time.sleep(SECONDS_BETWEEN_UPDATES)

except KeyboardInterrupt:
    print('File update stopped by user')

字符串
或者,如果您只想每隔60秒重新读取一个csv,即使它没有被修改,它会变得更简单:

import time
import pandas as pd

SECONDS_BETWEEN_UPDATES = 60

print('csv_file updater started, press ctrl+c to exit')

try:
    while:
        csv_file = pd.read_csv('data.csv', encoding='utf-8')
        print('Dataframe Updated')
        time.sleep(SECONDS_BETWEEN_UPDATES)

except KeyboardInterrupt:
    print('File update stopped by user')

除了最后一条之外,您可以随意删除print语句,如果您不希望使用pass替换它。
使用Control+C停止其运行

相关问题