EDIT
Further to the other below info and thanks to some helpful input the issue is caused by using strftime %s to generate a Unix Timestamp (which is what the system being queried requires). Strftime %s is not compatible with the Windows platform therefore I need to use an alternative method to generate the Unix Timestamp. Jez has suggested time.time() which I have experimented with but I'm clearly not doing it right somewhere along the way. I need to change this section of code from using strftime to time():
if (args.startdate):
from_time=str(int(args.startdate.strftime('%s')) * 1000)
if (args.enddate):
to_time=str(int(args.enddate.strftime('%s')) * 1000)
Any help or a steer greatly appreciated. :)
/EDIT
I've been given a Python script which appears to run ok when deployed on an Apple laptop but gives an error message when I run it on a Windows machine. I need to talk a 3rd party through executing the file remotely and he only has a windows machine so I need to try and figure out why it isn't working. I'm running 2.7 for reference. This section appears to be where the error is being caused:
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-s', "--startdate", help="The start date (included)- format YYYY-MM-DD -- if not specified then earliest available data", type=valid_date)
parser.add_argument('-e', "--enddate", help="The end date (excluded) - format YYYY-MM-DD -- if not specified then 'now'", type=valid_date)
parser.add_argument('-u', "--user", help="User name to use", default='admin')
parser.add_argument('-p', "--password", help="Password for user", default='redwood')
parser.add_argument('-a', "--attribute", help="Attribute", choices=['temperature', 'motion', 'input-power', 'output-power'], default='motion')
parser.add_argument('host', help='Hostname/IP address of engine to connect to', default='127.0.0.1')
args = parser.parse_args()
user = args.user
passwd = args.password
if (args.startdate):
from_time=str(int(args.startdate.strftime('%s')) * 1000)
if (args.enddate):
to_time=str(int(args.enddate.strftime('%s')) * 1000)
scale=1
unit='seconds since 1.1.1970'
if (args.attribute == 'temperature'):
path=temperature_path
scale = 100
unit = "Degrees Celsius"
elif (args.attribute == 'output-power'):
path=opower_path
scale = 100
unit = "Watts"
elif (args.attribute == 'input-power'):
path=ipower_path
scale = 1000
unit = "Watts"
else:
path=motion_path
print "Epoch Time, Local Time (this machine), Attribute, Value (%s) " % unit
query_stats(args.host)
This is the command I'm using to execute:
C:\Python27>python stats_query.py -s 2016-03-18 -e 2016-03-19 -u admin -p admin -a motion 192.168.2.222
And this is the error message I get:
Traceback (most recent call last):
File "stats_query.py", line 132, in <module>
from_time=str(int(args.startdate.strftime('%s')) * 1000)
ValueError: Invalid format string
If anyone has any thoughts I'd greatly appreciate any feedback. Apologies if I'm asking a stupid question - I'm really not very familiar with Python.
'%S'will make the code run without an exception, but yourfrom_timewill then only ever be a number from 0 to 59 (the "seconds" part of a formatted time). That's fairly useless as a baseline from which to measure elapsed time, because of wraparounds. You may simply wanttime.time()instead of anything to do withstrftime