如何解决Python中AttributeError: type object 'datetime.datetime' has no attribute 'timedelta'错误
解决datetime模块AttributeError:'datetime.datetime'没有'timedelta'属性的问题
错误原因
你遇到的AttributeError: type object 'datetime.datetime' has no attribute 'timedelta'是因为timedelta是datetime模块的直接成员,而非datetime.datetime类的属性,调用方式错误导致的。
修正方案及代码优化
除了修正timedelta的调用方式,还需要补充缺失的模块导入、优化变量命名(避免同一变量存储不同类型数据),以下是完整修正后的代码:
import datetime import requests # 补充缺失的requests模块导入 print('请输入需要追溯的天数:') days_ago = int(input()) # 直接转换为整数,简化步骤 today = datetime.datetime.now() # 修正timedelta调用方式,同时更换变量名避免混淆 start_date = today - datetime.timedelta(days=days_ago) # strftime直接返回字符串,无需额外str()转换 start_date_str = start_date.strftime('%Y-%m-%d') today_str = today.strftime('%Y-%m-%d') response = requests.get( f"http://api.marketstack.com/v1/eod?access_key=###########&symbols=AAPL&date_from={start_date_str}&date_to={today_str}" ) print(response)
关键修正点
- 修正
timedelta调用:将datetime.datetime.timedelta改为datetime.timedelta,这是核心错误的解决方式 - 补充模块导入:代码中使用
requests.get但未导入requests模块,必须添加import requests - 优化变量命名:原代码中
amount_Of_Days_Ago既存储整数天数又存储日期对象,容易引发逻辑混淆,改为days_ago(存储天数)和start_date(存储日期对象) - 简化类型转换:
strftime()方法返回的已经是字符串类型,无需再用str()二次转换 - 使用f-string拼接URL:相比字符串拼接,f-string更简洁易读
内容的提问来源于stack exchange,提问作者Hersh Saxena
相关产品推荐
相关产品推荐

