正在编写时,通过Dropbox文件同步hdf5

时间:2017-06-22 17:40:49

标签: python dropbox hdf5 pytables

我有一个如下所示的python脚本:

#!/usr/bin/env python3

import tables as pt
import numpy as np
import time


class TestTable(pt.IsDescription):
    timestamp = pt.Float64Col()
    voltage = pt.Float32Col()

h5file = pt.open_file('does_it_update_dropbox.h5', mode='a')
if not h5file.__contains__('/test'):
    h5file.create_table('/', 'test', TestTable)

row = h5file.root.test.row

try:
  while True:
    time.sleep(10)
    for _ in range(1000):
        row['timestamp'] = time.time()
        row['voltage'] = np.random.random(1)[0]
        row.append()
    h5file.root.test.flush()
    print('1000 records added')
except:
    pass
h5file.close()

每隔10秒,它会将数据写入HDF5文件。让我们说实验室里有一台计算机,它可以在一夜之间从传感器收集数据,我想分析5英里以外的家中的数据。事实证明,如果这是在Dropbox观看的文件夹中,Dropbox只会在脚本完成后同步(例如,如果我给它一个键盘中断)。我发现如果我在Unix机器上运行touch does_it_update_dropbox.h5,我可以让Dropbox同步。但是,我实验室的机器是Windows。

Stack Overflow,如何在Dropbox上创建HDF5文件,因为它是在Windows计算机内写的?

1 个答案:

答案 0 :(得分:0)

Pablo的回答是正确的,让我找到了一个更优雅的解决方案。

import os
filename = "does_it_update_dropbox.h5"
h5file.flush()
os.stat(filename) # this does the magic of updating the filesize on the disk