工作中,碰到了这样一个问题:根据用户ID获取用户信息中的某个参数A。而提供的用户id中,有些通过接口获取的用户信息是空的,那就无法拿到这些用户信息的参数A。
思考1:而当我想逐个把所有的用户信息中的参数A写入一个文件时就不好实现了。怎么解决这个问题呢?想到了用try……except……忽略错误。
思考2:如果try内部任意一行代码出现异常,# 直接跳转至except,执行except下代码。此方法只要有一个异常,程序就不继续执行了。当循环中出现异常时,如何跳过循环中的异常继续执行呢?
思考3:那就是把try 放在每次执行的循环中,出现错误时,在except中用 continue语句继续到下一个循环。当执行无误时,把参数A写入到文件中,当有错误时,跳转到except语句。
思路有了,举个栗子如下:
import json
import requests
import logging
import time
logging.basicConfig(level=logging.DEBUG,filename='xiangmu.log',format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') #设置日志级别
url_token="http://www.xiangmu.com/employee/getTokenByempCode" #获取用户信息接口
usertoken=[]
with open('F:/stand emp.txt','r') as f1:
with open('D:/emptoke.txt','r+') as f2:
lin_content = f1.readlines() #获取所有用户
lin_num = len(lin_content)
print(lin_num)
for f1_every in lin_content:
f1_every = f1_every.strip() # 去除行尾的换行符
payload = {'userCode': f1_every} #接口的参数
print(payload)
try:
res=requests.get(url=url_token,params=payload)
usertoken.append(res.json()['data']['token'])
token = res.json()['data']['token'] #获取所需要的参数A
time.sleep(0.1)
f2.write(token + '
')
except Exception as e:
logging.info('the exception error is %s, other is %s' % (e.args, repr(e)))
continue
f2.close()
f1.close()