我需要运行一个脚本,在这个脚本中,我必须在代码中的几个字段中更改一天的日期,但是我很难让脚本单独获得当天的日期,它只能手动获得以下格式的日期:
import datetime as date
Data_inicio = dt.date(2020,3, 1) #Ano, mês, Dia #here
Data_Fim = dt.date(2021,10,29)
我试着用这种方式修改代码:
import datetime as date
data = date.datetime.now()
data_today = data.strftime("%Y,%m,%d")
Data_inicio = dt.date(2020,3, 1)
Data_Fim = dt.date(data_today)
或
Data_Fim = data_today
以下错误发生在data_fim
中
files=glob.glob(url+'/*'+Data_inicio.strftime("%d%b%Y")+'-'+Data_Fim.strftime("%d%b%Y")+'.txt')
files_inativos =glob.glob(url_inativos+'/*'+ '.txt')
files = files + files_inativos
AttributeError: 'str' object has no attribute 'strftime'
发布于 2021-10-29 05:45:36
似乎唯一需要的是将“结束日期”变量设置为data_today
,而不是将其设置为datetime
对象,而不是字符串。问题是,您正试图直接从字符串中执行此操作,但是字符串没有用于日期和时间转换的方法。为了使用这些,您可以使用datetime.strptime()
,例如:
from datetime import datetime
date_today = datetime.today().strftime("%Y, %m, %d")
start_date = datetime(2020, 3, 1)
end_date = datetime.strptime(date_today, "%Y, %m, %d")
这将为“今天”(命名为date_today
)创建一个字符串,为开始日期(名为start_date
)创建一个datetime
对象,然后创建一个实际从现有字符串解析的结束日期变量(end_date
)。具体来说,在本例中,这个字符串是我们刚刚创建的字符串(date_today
)。
请注意,这个示例主要有教学目的,因为从datetime
创建一个“今天”字符串,然后将其解析回一个datetime
对象是没有什么意义的。如果要从其他地方获取end_date
,那么解析date_today
就更有意义了,但是使用已知的格式,在这种情况下,您可以将其解析为datetime
对象并使用它。但是,在相同的上下文中,您并没有真正使用字符串表示形式“don”。
如果是在相同的上下文中定义它们,那么可能根本不需要2个变量,而且只能使用datetime
对象。每当您需要打印它或将其显示为字符串时,您都可以将其格式化为特定的输出。例如:
from datetime import datetime
start_date = datetime(2020, 3, 1)
end_date = datetime.today()
print(end_date.strftime("%Y, %m, %d"))
>>> 2021, 10, 29
注意,如果您正在处理日期和时间,那么只使用datetime
对象并在需要输出字符串时格式化它们通常是一种更好的方法。节省了大量的工作和来回格式-解析-格式-解析的东西。此外,它还使您能够利用时间三角洲。
发布于 2021-10-29 07:52:23
看起来您正在创建一个datetime
对象,然后很难提取该对象的一部分(仅是date
部分)。您可以通过实例化date
或datetime
对象并提取您想要的属性来解决这个问题:
import datetime
# Using date objects
start_date = datetime.date(year=2020, month=3, day=1)
end_date = datetime.date.today()
# Using datetime objects (will include hours, minutes, seconds...)
start_date = datetime.datetime(year=2020, month=3, day=1)
end_date = datetime.datetime.today()
# You can format either object with the `.strftime()` method
date_now = datetime.date.today()
datetime_now = datetime.date.today()
for dt in [date_now, datetime_now]:
# format and print
print(dt.strftime('%Y,%m,%d'))
# Or access the attributes directly
print([dt.year, dt.month, dt.day])
https://stackoverflow.com/questions/69769576
复制相似问题