What might cause my sample program to forget that already imported datetime?

Chris Angelico rosuav at gmail.com
Mon Oct 12 06:36:57 EDT 2020


On Mon, Oct 12, 2020 at 9:14 PM Steve <Gronicus at 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


More information about the Python-list mailing list