2016-07-02 10 views
0

`hi 開始時刻から終了時刻までの時間を調べようとしていますが、出力は1つだけです!すべての行を選択するソリューションはありますか? 同じオブジェクトへtime_arry_temp poinst内のすべての項目は、その置き換えライン問題を解決するために私のコードは、あなたが1つの出力だけを持って、この時間の長さをPythonの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

@Mostafaはインデント用に4つのスペースで修正できますか? –

答えて

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

まだ1つの出力がありますが、 "tdelta =(d2- 21)!! – Mostafa

関連する問題