time.strftime('%m-%d-%Y %H:%m:%S') to log is out of order

D

davidj411

I am using a recursive function to print the time and a few other
things on each pass. ( the function calculates size of file that is
being transferred and if not 100 % copied, it waits 20 secs and checks
again).

i would expect the time to be correct anytime it is used:

<--code below -->>
print time.strftime('%m-%d-%Y %H:%m:%S')
<--code above -->>

here is an example of what i am seeing:

16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56
 
J

Jon Clements

I am using a recursive function to print the time and a few other
things on each pass. ( the function calculates size of file that is
being transferred and if not 100 % copied, it waits 20 secs and checks
again).

i would expect the time to be correct anytime it is used:

<--code below -->>
print time.strftime('%m-%d-%Y %H:%m:%S')
<--code above -->>

here is an example of what i am seeing:

16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56

I assume month, day and year are actually being output and that you've
removed it from your post.

Err, what else do you expect to happen if you're doing this
recursively?
 
S

Simon Forman

I am using a recursive function to print the time and a few other
things on each pass. ( the function calculates size of file that is
being transferred and if not 100 % copied, it waits 20 secs and checks
again).

i would expect the time to be correct anytime it is used:

<--code below -->>
print time.strftime('%m-%d-%Y %H:%m:%S')
<--code above -->>

here is an example of what i am seeing:

16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56

Your output doesn't match your format string:

In [1]: import time

In [2]: print time.strftime('%m-%d-%Y %H:%m:%S')
07-21-2009 17:07:16

There's no way to tell why your output times seem to repeat without
seeing the code that surrounds your "print time.strftime('%m-%d-%Y %H:
%m:%S')" line.
 
P

Piet van Oostrum

davidj411 said:
d> I am using a recursive function to print the time and a few other
d> things on each pass. ( the function calculates size of file that is
d> being transferred and if not 100 % copied, it waits 20 secs and checks
d> again).
d> i would expect the time to be correct anytime it is used:
d> <--code below -->>
d> print time.strftime('%m-%d-%Y %H:%m:%S')
d> <--code above -->>
d> here is an example of what i am seeing:
d> 16:07:16
d> 16:07:36
d> 16:07:56
d> 16:07:16
d> 16:07:36
d> 16:07:56
d> 16:07:16
d> 16:07:36
d> 16:07:56

You probably meant: print time.strftime('%m-%d-%Y %H:%M:%S')
 
D

davidj411

I am using a recursive function to print the time and a few other
things on each pass. ( the function calculates size of file that is
being transferred and if not 100 % copied, it waits 20 secs and checks
again).
i would expect the time to be correct anytime it is used:
<--code below -->>
print time.strftime('%m-%d-%Y %H:%m:%S')
<--code above -->>
here is an example of what i am seeing:
16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56

Your output doesn't match your format string:

In [1]: import time

In [2]: print time.strftime('%m-%d-%Y %H:%m:%S')
07-21-2009 17:07:16

There's no way to tell why your output times seem to repeat without
seeing the code that surrounds your "print time.strftime('%m-%d-%Y %H:
%m:%S')" line.

sorry, yes, i did manually filter the output.

here is the function:

def log_out(msg,servername='std.out'):
print msg
open(log_dir + '\\' + servername + ".log",'a').write(servername + "-"
+ time.strftime('%m-%d-%Y %H:%M:%S') + " " + msg+'\n')

on each pass, it should output the newer time (whether recursive or
not, right) ?
 
M

MRAB

davidj411 said:
I am using a recursive function to print the time and a few other
things on each pass. ( the function calculates size of file that is
being transferred and if not 100 % copied, it waits 20 secs and checks
again).
i would expect the time to be correct anytime it is used:
<--code below -->>
print time.strftime('%m-%d-%Y %H:%m:%S')
<--code above -->>
here is an example of what i am seeing:
16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56
16:07:16
16:07:36
16:07:56
Your output doesn't match your format string:

In [1]: import time

In [2]: print time.strftime('%m-%d-%Y %H:%m:%S')
07-21-2009 17:07:16

There's no way to tell why your output times seem to repeat without
seeing the code that surrounds your "print time.strftime('%m-%d-%Y %H:
%m:%S')" line.

sorry, yes, i did manually filter the output.

here is the function:

def log_out(msg,servername='std.out'):
print msg
open(log_dir + '\\' + servername + ".log",'a').write(servername + "-"
+ time.strftime('%m-%d-%Y %H:%M:%S') + " " + msg+'\n')

on each pass, it should output the newer time (whether recursive or
not, right) ?

Maybe it does, but you were outputting the month ("07") instead of the
minutes; the seconds were changing.
 
P

Piet van Oostrum

d> here is the function:
d> def log_out(msg,servername='std.out'):
d> print msg
d> open(log_dir + '\\' + servername + ".log",'a').write(servername + "-"
d> + time.strftime('%m-%d-%Y %H:%M:%S') + " " + msg+'\n')
d> on each pass, it should output the newer time (whether recursive or
d> not, right) ?

How come your strftime is now different from the first posting? Are you
cheating?

If you want to ask a question about why your code is not working
properly there are a few important rules:

1. Copy and paste your code, and at least all relevant stuff (preferably
a minimal example that shows the problem). *DO NOT RETYPE THE CODE*

2. Copy and paste the output. *DO NOT RETYPE THE OUTPUT*

3. Tell what the expected or desired output is.
 
S

Simon Forman

Your output doesn't match your format string:
In [1]: import time
In [2]: print time.strftime('%m-%d-%Y %H:%m:%S')
07-21-2009 17:07:16
There's no way to tell why your output times seem to repeat without
seeing the code that surrounds your "print time.strftime('%m-%d-%Y %H:
%m:%S')" line.

sorry, yes, i did manually filter the output.

here is the function:

def log_out(msg,servername='std.out'):
        print msg
        open(log_dir + '\\' + servername + ".log",'a').write(servername + "-"
+ time.strftime('%m-%d-%Y %H:%M:%S') + " " + msg+'\n')

on each pass, it should output the newer time (whether recursive or
not, right) ?

Well, as Piet van Oostrum pointed out, your problem in the first code
you posted was that you used '%m' rather than '%M' for the minutes.
(Good eye Van Oostrum!) But now in this function you seem to have the
correct '%M' field. Are you still having the same output after
changing that?


In any event, here's a rewritten version of that function that's a
little cleaner, FWIW.


from os.path import join
from time import strftime

format = '%m-%d-%Y %H:%M:%S'

def log_out(msg, servername='std.out'):
print msg
msg = "%s - %s %s\n" % (servername, strftime(format), msg)
log_file = open(join(log_dir, servername + ".log"), 'a')
try:
log_file.write(msg)
finally:
log_file.close()


But why not just use the logging module?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top