Python 使用变量从导入的模块获取列表
我正在尝试制作一个脚本,在这个脚本中,我的缩放类将根据时间表自动打开 我制作了一个名为schedule的模块,其中包含每个工作日例行程序的单独列表 在主文件中,我制作了一个字典,其中键是使用datetime.today().weekday()后得到的整数值,值是其对应的工作日名称,如{0:monday} 在我的函数中,如果今天的weekday整数值与dictionary键匹配,那么它将从schedule模块调用其相应的值weekday。但当我运行它时,它会说“AttributeError:module'schedule'没有属性'value'” 这是我的部分代码供参考Python 使用变量从导入的模块获取列表,python,python-3.x,Python,Python 3.x,我正在尝试制作一个脚本,在这个脚本中,我的缩放类将根据时间表自动打开 我制作了一个名为schedule的模块,其中包含每个工作日例行程序的单独列表 在主文件中,我制作了一个字典,其中键是使用datetime.today().weekday()后得到的整数值,值是其对应的工作日名称,如{0:monday} 在我的函数中,如果今天的weekday整数值与dictionary键匹配,那么它将从schedule模块调用其相应的值weekday。但当我运行它时,它会说“AttributeError:mod
#Monday=0, Tuesday=1 , Wednesday=2, Thursday=3, Sun=6.
weekday = {'1':'tuesday',
'2':'wednesday',
'3':'thursday',
'6':'sunday',
'0':'monday'}
#Function for opening and closing link in webbrowser.
def open_webbrowser():
global activation
day = datetime.today().weekday()
for key, value in weekday.items():
if int(key) == day:
for i in schedule.value:...
这是时间表模块。我将原来的链接替换为“中联重科”
#Class routine.
sunday = [
[zoomlink,'09:01','09:39'],
[zoomlink,'10:01','10:39'],
[zoomlink,'11:01','11:39'],
[zoomlink,'12:01','12:39']
]
monday = [...]
tuesday = [...]
wednesday = [...]
thursday = [...]
代码不起作用的原因是
schedule.value
试图在schedule模块中获取名为value
的变量,而您希望该变量扩展为类似于schedule.sunday
解决此问题的一种方法是将列表封装在字典中,在字典中可以使用字符串索引(如“sunday”或“monday”)访问列表。如果要执行此操作,您的计划模块将如下所示:
zoomLinkData = {
"sunday": [
[zoomlink,'09:01','09:39'],
[zoomlink,'10:01','10:39'],
[zoomlink,'11:01','11:39'],
[zoomlink,'12:01','12:39']
],
"monday": [...],
"...": [...]
}
要访问循环中此字典中的数据,可以执行以下操作:
for key, value in weekday.items():
if int(key) == day:
for i in schedule.zoomLinkData[value]:...
以下部分:
计划中的i的。值:。。。
替换为
getattr(计划,值)中的i的:。。。
它应该会起作用。原因是,在for循环中,您将得到值作为星期二
,星期三
,星期四
,星期日
或星期一
,它是一个字符串。所以,如果你像schedule.tuday那样访问它,它肯定会工作。但不幸的是,您正在访问schedule.value
和value
也是一个变量,并且在schedule模块中没有名为value
的属性。因此,最简单和更具Python风格的解决方案之一就是使用。我从问题中摘录了以下内容
getattr(object,'x')完全等同于object.x
只有两种情况下getattr是有用的
- 您不能编写object.x,因为您事先不知道需要哪个属性(它来自字符串)。非常有用的元编程
- 您希望提供一个默认值。如果没有y,y将引发AttributeError。但是getattr(对象'y',5)将返回5
现在,您将更好地了解如何使用该函数,有关更多信息,请查看官方文档或我前面提到的问题。欢迎@m4rk\u Henry\u ftw,刚刚更新了我的答案,以了解更多有关您做错了什么的信息,这是解决此类情况的一种python方法。如果你没有得到任何意见,或者如果你需要知道什么,请不要犹豫,在下面发表评论,很高兴帮助你!