我想将命令的结果保存在 csv 文件中。 我现在有这个代码:
import sys
import os
import time
import datetime
import subprocess
import csv
with open("compteur_data.csv","a") as csvfile:
date = datetime.datetime.today()
wtr=csv.writer(csvfile)
wtr.writerow(['Date/Heure','DATA']) #pillar title
while True:
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
print '..............................', st
sys.stdout.flush()
cmd = 'sdm120c -a 1 -b 2400 -P N -S 2 -j 20 -z 1 /dev/ttyUSB0'
(c_stdin,c_stdout,c_stderr)=os.popen3(cmd,'r')
out=c_stdout.read()
print out
c_stdin.close()
c_stdout.close()
c_stderr.close()
wtr.writerow([date,out])
time.sleep(5)
我的目的是从 sdm120c 收集数据,然后将数据保存在 csv 文件中。 在我的 python shell 上,我可以看到我想要每 5 秒保存一次的所有数据,但是当我打开 objective-c sv 文件时,没有任何内容写入.. 也许有人会问我错在哪里?请。
最佳答案
添加一个调用以将缓冲内容刷新到文件中。这是通过使用调用来实现的:csvfile.flush()
with open("compteur_data.csv","a") as csvfile:
date = datetime.datetime.today()
wtr=csv.writer(csvfile)
wtr.writerow(['Date/Heure','DATA']) #pillar title
while True:
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
print '..............................', st
sys.stdout.flush()
cmd = 'sdm120c -a 1 -b 2400 -P N -S 2 -j 20 -z 1 /dev/ttyUSB0'
(c_stdin,c_stdout,c_stderr)=os.popen3(cmd,'r')
out=c_stdout.read()
print out
c_stdin.close()
c_stdout.close()
c_stderr.close()
wtr.writerow([date,out])
#New call to flush added below
csvfile.flush()
time.sleep(5)
关于python - 在 python 中将命令中的数据保存到 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38102450/