On Sun, Jan 11, 2015 at 7:57 PM, Dave Angel <da...@davea.name> wrote:
>>
>>
> No idea how that represents "a difference of 5 minutes".  So I'll take a 
> totally wild guess that you meant:
>
> Sunday 23:50 23:55
> Monday 00:00 00:05
> Monday 00:10 00:15
> Monday 00:20 00:25
> Monday 00:30 00:35
>
> which would have the 2nd column 5 minutes after the first.
>
> You need another datetime object, let's call it 'end'
>
> end = start + timedelta(minutes=5)
>
> and now you want to yield three things, in a tuple:
>
> yield (start.strftime("%A"), start.strftime("%H:%M"),
>    end.strftime("%H:%M"))
>
> Of course that's a pain to do twice, as you have two yields in that function. 
>  I'll leave you to reorder the loop to make that unnecessary.  Hint, do the 
> yield first, THEN increment the start variable.

Thanks for the inputs , I tried doing the increments and decrements
first and then Yield

 Program:

  Login-1@SNAP-BOX-1 new]$ cat time_range_01.py
#!/usr/bin/python
import time
from datetime import date, time, datetime, timedelta
#h = datetime.strftime("%H")
#m = datetime.strftime("%M")
h=23
m=50
d = date.today()
print d

def yield_times():
    global  h,m,d
    start = datetime.combine(d, time(int(h),int(m)))
    end = datetime.combine(d, time(int(h),int(m)))
    while True:
        start += timedelta(minutes=10)
        end = start + timedelta(minutes=5)
        
yield(start.strftime("%A"),start.strftime("%H:%M"),end.strftime("%H:%M"))
gen = yield_times()
for i in range(10):
    print gen.next()

output :
[Login-1@SNAP-BOX-1 new]$ python time_range_01.py
2015-01-12
('Tuesday', '00:00', '00:05')
('Tuesday', '00:10', '00:15')
('Tuesday', '00:20', '00:25')
('Tuesday', '00:30', '00:35')
('Tuesday', '00:40', '00:45')
('Tuesday', '00:50', '00:55')
('Tuesday', '01:00', '01:05')
('Tuesday', '01:10', '01:15')
('Tuesday', '01:20', '01:25')
('Tuesday', '01:30', '01:35')

PS :   Except formatting the results looks pretty much what i was
expecting .I was pretty much happy to see this last night :) .


> and in the other loop, you want
>     res = "{} {} {}\n".format(gen.next)
>     print res,
>
>>

Thanks ,  I will have to modify for the new output

>> (b)  how to copy the above output (i.e with the new column to a file.)
>>
>
> Instead of printing, just do f.write(res).  Or do both. Notice that to make 
> this easy, i avoided doing any formatting in the print statement. I used a 
> trailing comma on it to avoid print adding a newline, and instead put it 
> explicitly in the format method call.
>
>>

Sure

>> (c)  The  final output should be a file , having the entries  day ,
>> start , end time of the remote file. how do  i pass the  this to
>> yeild-times()
>>
>> import time
>>
>> /* Assuming I retrive the below values h,m,d from the remote machine*/
>>
>> h = time.strftime("%H")
>> m = time.strftime("%M")
>> d = date.today()
>>
>
> Those first two are strings, but the third is a datetime object.  That last 
> can be painful to pass between machines.

Correct , also looks like I have another issue , if I happen to pass
the first two strings

#  instead hard coded value i.e h = 23 and y =50 , i try using the
string directly I end up getting the below error :

h = datetime.strftime("%H")
m = datetime.strftime("%M")

[Login-1@SNAP-BOX-1 new]$ python  time_range_01.py
Traceback (most recent call last):
  File "time_range_01.py", line 4, in <module>
    h = datetime.strftime("%H")
TypeError: descriptor 'strftime' requires a 'datetime.date' object but
received a 'str'

The date time object is retrieved once once from the remote machine
and just for building the file in the required format.
Do you foresee any problems using this ?

>
>>
>> def yield_times():
>>        global h,m,d
>
>
> No idea what that's all about.  If you want to pass arguments to 
> yield_times(), put them inside the parens.
>
sure .

Regards,
Gpal
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to