对Python来说相当陌生,所以这可能是基本的,但是非常感谢您的帮助。我正在使用Python调用我的Tableau服务器API,并尝试遍历组中的每个用户,构建一个电子邮件地址列表,目标是通过电子邮件向每个组发送他们视图的pdf。我已经在所有函数之外定义了我所需要的列表(我想这是指全局的吗?)。在下面的代码示例中,我将“testuser”附加到列表中,因为我不希望前面的循环最初起作用。我只是想确定数据将附加到全局定义的列表中。它没有。当我在main函数中打印列表时,它是空的。你知道吗
xmlns = {'t': 'http://tableau.com/api'}
groupnames = ['Data Source Publisher']
workbooks = []
usernames = []
def get_email_address(groupname):
groups = server_response.findall('.//t:group', namespaces=xmlns)
for group in groups:
if group.get('name') == groupname:
usernames.append(group.get('id'))
usernames.append('2002327')
return usernames;
def main():
print(usernames)
if __name__ == '__main__':
main()
我的主要故障是什么?你知道吗
问题不是你没有更新一个全局变量。问题是在代码中的任何时候都不调用
get_email_address
。你知道吗groups = server_response.findall('.//t:group', namespaces=xmlns)
,所以我必须猜测它返回的结构get_email_address
,我知道该参数无法在if group.get('name') == groupname:
中找到匹配项,因此在该检查之后,默认的append
仍然会触发。你知道吗这正是您所期望的:
如果将
get_email_address('something')
更改为get_email_address('abc')
,则会注意到打印的全局列表包含两个项(因为它将在groups
中找到匹配项)。你知道吗相关问题 更多 >
编程相关推荐