我有一个如下所示的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计算机内写的?
答案 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