可能是一个愚蠢的问题,但是我正用这个问题敲打桌子,似乎无法在任何地方找到同样的问题!
我的任务是整合大量脚本以使用GSuite的API,基本上将我们想要批量处理的所有功能编写成脚本。
我有一个用CSV创建用户,当它创建用户时,它没有将orgUnitPath变量设置为预期的字符串。
我已经确认它知道该变量应该是什么(一个方便的打印调用告诉我它正在运行时)但是它会降落到顶层而不是它应该进入的区域。
代码可以归结为此(我已经省略了get_credentials和其他一些步骤,因为我知道这些正在运行......):
# Dict file so keywords can be used in CSV to call paths
orgunitDict = {'CS': 'Ops/CS', 'SM': 'Ops/SM', 'Accounts': 'Ops/Etc/Accounts'}
# Read CSV as dict
reader = csv.DictReader(inputfile)
# Iterate through rows of CSV creating user according to a combination of CSV data and fixed values (eg address type = work)
for row in reader:
emailaddress = str(row['givenName']) + '.' + str(row['familyName']) + '@mydomain.co.uk'
orgunitPath = orgunitDict[row['org']]
userinfo = {'name': {'givenName': row['givenName'],
'familyName': row['familyName']}, 'password': row['Password'], 'primaryEmail': emailaddress,
'changePasswordAtNextLogin': 'TRUE', 'addresses': {'type': 'work', 'streetAddress': row['streetAddress']},
'orgUnitPath': orgunitPath, 'organizations': {'title': row['Title']}, 'relations': {'type': 'manager', 'value': row['Manager']}
}
# Function to actually create the user
user_request = service.users().insert(body=userinfo)
user_request.execute()
print(orgUnitPath)
现在最后一次打印调用显示我,如果'CS'是该行中的值,结果为'Ops / CS',所以变量设置正确,但它没有在目录中设置。
有人能指出我正确的方向吗?
谢谢!
[顺便使用Python 3.6]
答案 0 :(得分:0)
事实证明,它只是在努力从字典中调用值作为字典中的值(我想使用行中的'org'值作为从dict orgunitDict调用值的键)。
按中间步骤排序,将第一个键指定为变量: #Dict文件,因此可以在CSV中使用关键字来调用路径 orgunitDict = {'CS':'Ops / CS','SM':'Ops / SM','账户': '行动/ ETC /帐户'}
# Read CSV as dict
reader = csv.DictReader(inputfile)
# Iterate through rows of CSV creating user according to a
combination of CSV data and fixed values (eg address type = work)
for row in reader:
emailaddress = str(row['givenName']) + '.' +
str(row['familyName']) + '@mydomain.co.uk'
orgrow = row['org']
orgunitPath = orgunitDict[orgrow]
userinfo = {'name': {'givenName': row['givenName'],
'familyName': row['familyName']}, 'password': row['Password'],
'primaryEmail': emailaddress,
'changePasswordAtNextLogin': 'TRUE', 'addresses': {'type':
'work', 'streetAddress': row['streetAddress']},
'orgUnitPath': orgunitPath, 'organizations': {'title':
row['Title']}, 'relations': {'type': 'manager', 'value':
row['Manager']}
}
# Function to actually create the user
user_request = service.users().insert(body=userinfo)
user_request.execute()
print(orgUnitPath)
orgrow = row['org']