等到动态更新 csv 有 X 行后再执行 (python 2.7)
wait until dynamically-updating csv has X number of rows before executing (python 2.7)
我想检查一个 csv 文件(连续地或每隔 x seconds/milliseconds),并在 csv 达到临界行数后执行一个函数。
我看过 apscheduler,但我认为有更简单的方法可以做到这一点。
非常感谢您的帮助!
Python 2.7,Unix
你可以使用asyncio
模块来实现,使用Python 3.5,一个工作示例如下:
import asyncio
required_lines = 3
sleep_seconds = 2
async def count_lines(loop):
num_lines = open('file_name.csv').read().count('\n')
while num_lines != required_lines:
await asyncio.sleep(sleep_seconds)
num_lines = open('file_name.csv').read().count('\n')
loop = asyncio.get_event_loop()
loop.run_until_complete(count_lines(loop))
loop.close()
在 Python 3.4 中,使用下面的 count_lines
函数代替上面的函数:
@asyncio.coroutine
def count_lines(loop):
num_lines = open('file_name.csv').read().count('\n')
while num_lines != required_lines:
yield from asyncio.sleep(sleep_seconds)
num_lines = open('file_name.csv').read().count('\n')
编辑: for Python 2.7 您可以使用 trollius
库,如下所示(trollius
仍然有效,但不再维护!):
import trollius
from trollius import From
required_lines = 3
sleep_seconds = 2
@trollius.coroutine
def count_lines():
num_lines = open('file_name.txt').read().count('\n')
while num_lines != required_lines:
yield From(trollius.sleep(sleep_seconds))
num_lines = open('file_name.txt').read().count('\n')
loop = trollius.get_event_loop()
loop.run_until_complete(count_lines())
我想检查一个 csv 文件(连续地或每隔 x seconds/milliseconds),并在 csv 达到临界行数后执行一个函数。
我看过 apscheduler,但我认为有更简单的方法可以做到这一点。
非常感谢您的帮助!
Python 2.7,Unix
你可以使用asyncio
模块来实现,使用Python 3.5,一个工作示例如下:
import asyncio
required_lines = 3
sleep_seconds = 2
async def count_lines(loop):
num_lines = open('file_name.csv').read().count('\n')
while num_lines != required_lines:
await asyncio.sleep(sleep_seconds)
num_lines = open('file_name.csv').read().count('\n')
loop = asyncio.get_event_loop()
loop.run_until_complete(count_lines(loop))
loop.close()
在 Python 3.4 中,使用下面的 count_lines
函数代替上面的函数:
@asyncio.coroutine
def count_lines(loop):
num_lines = open('file_name.csv').read().count('\n')
while num_lines != required_lines:
yield from asyncio.sleep(sleep_seconds)
num_lines = open('file_name.csv').read().count('\n')
编辑: for Python 2.7 您可以使用 trollius
库,如下所示(trollius
仍然有效,但不再维护!):
import trollius
from trollius import From
required_lines = 3
sleep_seconds = 2
@trollius.coroutine
def count_lines():
num_lines = open('file_name.txt').read().count('\n')
while num_lines != required_lines:
yield From(trollius.sleep(sleep_seconds))
num_lines = open('file_name.txt').read().count('\n')
loop = trollius.get_event_loop()
loop.run_until_complete(count_lines())