我想用DictWriter将数据存储在csv中,然后用DictReader的另一个脚本读取数据。
如果该文件存在,我只想添加数据,如果不存在,则使用dict键创建它。我要这么做:
log_dict = {'X':list_X_data ,'Y':list_X_data,'time':list_time_data}
if( path.exists(file) ):
with open(file, 'a') as csvwritefile:
writer = csv.writer(csvwritefile, delimiter = ",")
try:
writer.writerows(zip(*[log_dict[key] for key in sorted(log_dict.keys())]))
csvwritefile.close()
except IOError:
print("IO Error", file)
csvwritefile.close()
else:
with open(file, 'w') as csvwritefile:
w = csv.DictWriter(csvwritefile, sorted(log_dict.keys()))
try:
w.writeheader()
except IOError:
print("IO Error", file)
csvwritefile.close()我不知道如何用DictWriter存储带有list的dict作为值,所以我使用了zip(),因为我知道这是可能的。每一秒,我都会将数据附加到每个列表中,然后每分钟存储一次。所以我得到了这样的东西:
Heure X Y
16:12:16 0.9 4.5
16:12:17 0.8 0.9
16:12:18 0.0 0.9我想知道如何用DictReader来读取这个文件,例如,获取X的所有行,或者仅仅是最后的60个元素。
我在另一个问题上发现了这一点,但它只输出了文件的最后一行:
w = DictReader(csvwritefile)
reader = DictReader(csvwritefile)
for line_dict in reader:
X = line_dict['X'](这里的输出将是0.0)
(不好意思语法或语法不好.)
发布于 2017-11-28 16:40:51
下面是如何处理数据的这两件事。我不确定是否使用了分隔符,所以我猜它是一个制表符字符-但是如果它是其他的东西,您可以很容易地改变它。
import csv
filename = 'timing_data.csv'
# Get all the X values.
with open(filename, 'r', newline='') as csvfile:
reader = csv.DictReader(csvfile, delimiter='\t')
x_values = [row['X'] for row in reader]
print(x_values) # -> ['0.9', '0.8', '0.0']from collections import deque
filename = 'timing_data.csv'
# Get the last "N" X values.
N = 2
with open(filename, 'r', newline='') as csvfile:
reader = csv.DictReader(csvfile, delimiter='\t')
last_N_x_values = list(deque((row['X'] for row in reader), N))
print(last_N_x_values) # -> ['0.8', '0.0']https://stackoverflow.com/questions/47535859
复制相似问题