2016-07-02 3 views
0

`안녕 시작 시간과 종료 시간 사이의 시간 간격을 찾으려고하지만 출력이 하나뿐입니다! 거기에 모든 행을 선택하는 솔루션입니다!? 같은 객체에 time_arry_temp poinst의 모든 항목, 그래서 대체 라인 문제를 해결하기 때문에 내 코드는 하나 개의 출력을 가지고이파이썬에서 timedelta 시간 지속 시간

import csv 
import datetime 
import time 
from datetime import datetime 
from datetime import timedelta,date 
f1=open("starttime.csv") 
f2=open("endtime.csv") 
time_arry_temp = [[]]*5 
i=0 
for row in csv.reader(f1): 
fmt = '%d/%m/%Y %H:%M' 
d1=datetime.strptime(row[0], fmt) 
for row in csv.reader(f2): 
fmt = '%d/%m/%Y %H:%M' 
d2=datetime.strptime(row[0], fmt) 
tdelta = (d2-d1) 
if tdelta.days < 0: 
    tdelta = timedelta(days=0,seconds=tdelta.seconds, microseconds=tdelta.microseconds) 
t = tdelta * 24 * 60 
time_arry=str(t).split() 
print (time_arry) 
time_arry_temp[i]=time_arry 
i=i+1 
f1.close() 
f2.close() 
print(time_arry_temp) 
+1

코드의 들여 쓰기를 수정하십시오. – falsetru

+0

@ flasetru 나는 ​​들여 쓰기를 수정했다. – Mostafa

+0

@ 모스 타파는 들여 쓰기를 위해 네 개의 공백으로 수정할 수 있습니까? –

답변

0

글쎄, 나는 약간의 코드를 편집 해 썼습니다. 그것이 당신의 일을하는지 확인하십시오.

import csv 
from datetime import datetime,timedelta 
get_time=lambda x: datetime.strptime(x, '%d/%m/%Y %H:%M') 
with open("starttime.csv") as f , open("endtime.csv") as g: 
    d1=[get_time(row[0]) for row in csv.reader(f)] 
    d2=[get_time(row[0]) for row in csv.reader(g)] 
tdelta = [(a-b) for a,b in zip(d1,d2)] 

for n,t in enumerate(tdelta): 
    if t.days < 0: 
     tdelta[n]=timedelta(days=0,seconds=t.seconds, microseconds=t.microseconds) 

# time_arry_temp =[str(i*24 * 60).split() for i in tdelta] 
time_arry_temp =[str(i).split() for i in tdelta] 
print time_arry_temp 
+0

우수, 관심을 가져 주셔서 감사합니다 :) – Mostafa

0

처럼 다음입니다 :

time_arry_temp = [[]]*5 

time_arry_temp = [[] for _ in range(5)] 
로를

Python Common Gotchas 기사를보십시오. 많은 유용한 정보가 있습니다.)

+0

여전히 출력이 하나 있습니다. "tdelta = (d2- 21) !! – Mostafa