2017-11-28 1 views
1

데이터를 DictWriter으로 csv에 저장하고 다른 스크립트로 DictReader으로 읽고 싶습니다.dictWriter/Reader with csv

파일이있는 경우 데이터를 추가하고 싶습니다. 그렇지 않으면 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() 

나는 그것이 가능했던 알고 있기 때문에 내가 zip()을 사용하므로 값을 list들과 DictWriterdict로 저장하는 방법을 알고하지 않았다. 매 초마다 각 목록에 데이터를 추가 한 다음 1 분마다 저장합니다. X또는 단지 지난 60 개 요소

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으로이 파일을 읽고 exemple 얻을 수있는 방법을 궁금해 모든 행 : 그래서 나는 그런 일을 얻었다.

나는 anonther 질문에이를 발견하지만 파일의 마지막 라인 출력 :
w = DictReader(csvwritefile) 
reader = DictReader(csvwritefile) 
for line_dict in reader: 
    X = line_dict['X'] 

이 (여기 출력이 0.0 것) 나쁜 문법이나 구문

(미안 ...)

답변

0

다음은 데이터로 이러한 두 가지 작업을 수행하는 방법입니다. 구분 기호가 사용되는 것은 확실하지 않으므로 탭 문자라고 생각해보십시오. 그러나 다른 것이 있으면 쉽게 변경할 수 있습니다.

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'] 
+0

좋아 덕분에, 나는이 내일 시도하고 나에게 맞는 경우 알려 드릴 것입니다 – GarennePb