Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用变量从导入的模块获取列表_Python_Python 3.x - Fatal编程技术网

Python 使用变量从导入的模块获取列表

Python 使用变量从导入的模块获取列表,python,python-3.x,Python,Python 3.x,我正在尝试制作一个脚本,在这个脚本中,我的缩放类将根据时间表自动打开 我制作了一个名为schedule的模块,其中包含每个工作日例行程序的单独列表 在主文件中,我制作了一个字典,其中键是使用datetime.today().weekday()后得到的整数值,值是其对应的工作日名称,如{0:monday} 在我的函数中,如果今天的weekday整数值与dictionary键匹配,那么它将从schedule模块调用其相应的值weekday。但当我运行它时,它会说“AttributeError:mod

我正在尝试制作一个脚本,在这个脚本中,我的缩放类将根据时间表自动打开

我制作了一个名为schedule的模块,其中包含每个工作日例行程序的单独列表

在主文件中,我制作了一个字典,其中键是使用datetime.today().weekday()后得到的整数值,值是其对应的工作日名称,如{0:monday}

在我的函数中,如果今天的weekday整数值与dictionary键匹配,那么它将从schedule模块调用其相应的值weekday。但当我运行它时,它会说“AttributeError:module'schedule'没有属性'value'”

这是我的部分代码供参考

#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方法。如果你没有得到任何意见,或者如果你需要知道什么,请不要犹豫,在下面发表评论,很高兴帮助你!