On Mon, Oct 12, 2020 at 9:14 PM Steve <Gronicus@sga.ninja> wrote: > > At the top of my sample program, I have: > > import datetime > from datetime import * > > But import datetime also has to be entered on line 21 as shown. > The error is printed at the bottom of the code. > Why does the code seem to forget that I have already imported datetime? > ============================================================= > import datetime > from datetime import * > > d2 = datetime.now() > d2i = d2.isoformat() > > with open("TimeDate.txt", 'r') as infile: > for BottleInfo in infile: # loop to find each line in the file for that > dose > BottleInfo = BottleInfo.strip() > > if ((BottleInfo[0:3]== "LBD")): > BottleData = BottleInfo[0:43].strip() > > BottleDataA = BottleData[4:14].strip() > BottleDataB = BottleData[16:30].strip() > BottleDataC = BottleDataA + " " + BottleDataB > print("BottleDataC = <" + BottleDataC + ">") > print() > d1 = BottleDataC > > import datetime #Why does this have to be here? line 21 > > dto = datetime.datetime.strptime(d1, '%Y-%m-%d %H:%M:%S.%f') > dti = dto.isoformat() > > HoursDiff = int((d2-dto).total_seconds()/3600) > print("HoursDiff = " + str(HoursDiff)) > print() > > TimeDateInfo=open("TimeDate.txt", "a") > TimeDateInfo.write("{0:>5} {1:>25} {2:>5}\n".format ("LBD", d2i, HoursDiff)) > TimeDateInfo.close() > > print("Done") > > """ > This is the error I get if I comment out line 21: > > Traceback (most recent call last): > File "F:/Med Insulin codes A/A TEST 10-07-2020/ReadWriteTimeDate POSIX > Samplea.py", line 38, in <module> > dto = datetime.datetime.strptime(d1, '%Y-%m-%d %H:%M:%S.%f') > AttributeError: type object 'datetime.datetime' has no attribute 'datetime' > """ > This code will be copied into another program as a function and the presence > of import datetime in line 21 causes another error. >
The issue here is that you've done two different imports at the top: import datetime from datetime import * These are incompatible with each other, so you're going to get issues. I'd recommend doing just the first one, and then identifying d2 as datetime.datetime.now() instead. ChrisA -- https://mail.python.org/mailman/listinfo/python-list