我有兴趣构建一个 python 脚本,它可以为我提供关于每个间隔(可能是一分钟)写入文件的行数的统计信息。我有在数据进入时正在写入的文件,每个用户都有一个新行,通过外部程序传递数据。知道每个 x 有多少行给了我一个可以用于未来扩展计划的指标。输出文件由行组成,所有行的长度都相对相同,并且最后都带有行返回。我正在考虑编写一个脚本,该脚本执行以下操作:在特定点测量文件的长度,然后在未来的另一个点再次测量它,减去两者并得到我的结果......但我不知道如果这是理想的,因为测量文件的长度需要时间,这可能会扭曲我的结果。有没有人有任何其他想法?
根据人们所说的,我把它放在一起开始:
import os
import subprocess
import time
from daemon import runner
#import daemon
inputfilename="/home/data/testdata.txt"
class App():
def __init__(self):
self.stdin_path = '/dev/null'
self.stdout_path = '/dev/tty'
self.stderr_path = '/dev/tty'
self.pidfile_path = '/tmp/count.pid'
self.pidfile_timeout = 5
def run(self):
while True:
count = 0
FILEIN = open(inputfilename, 'rb')
while 1:
buffer = FILEIN.read(8192*1024)
if not buffer: break
count += buffer.count('\n')
FILEIN.close( )
print count
# set the sleep time for repeated action here:
time.sleep(60)
app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()
它的工作是每 60 秒获取一次计数并将其打印到屏幕上,我的下一步是我猜的数学。
另一个编辑:我以一分钟的间隔添加了计数的输出:
import os
import subprocess
import time
from daemon import runner
#import daemon
inputfilename="/home/data/testdata.txt"
class App():
def __init__(self):
self.stdin_path = '/dev/null'
self.stdout_path = '/dev/tty'
self.stderr_path = '/dev/tty'
self.pidfile_path = '/tmp/twitter_counter.pid'
self.pidfile_timeout = 5
def run(self):
counter1 = 0
while True:
count = 0
FILEIN = open(inputfilename, 'rb')
while 1:
buffer = FILEIN.read(8192*1024)
if not buffer: break
count += buffer.count('\n')
FILEIN.close( )
print count - counter1
counter1 = count
# set the sleep time for repeated action here:
time.sleep(60)
app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()