字典转dataframe写入excel且创建多个sheet

从环信请求的批量用户信息,分页在返回结果cursor里面,且不固定。返回结果集是json字符串,利用列表追加或者扩展的属性进行全局变量赋值,然后写入excel统计查看。

代码如下:


# -*- coding: utf-8 -*-
import requests
import json
import pandas as pd

"""
查看环信注册用户数据
"""
headers = {
    'Content-Type': 'application/json',
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
}

ulistextend = []
ulistappend = []
def getToken():
    url = "https://a1-vip5.easemob.com/test/test/token"
    dictdata = '''{
	"grant_type":"test",
	"client_id":"test",
	"client_secret":"test"
    }'''
    res = requests.post(url, headers=headers, data=dictdata)
    token = res.content.decode("utf-8")
    token = json.loads(token)
    return token['access_token']

def getUsers(token, cursor=''):
    limit = 600
    headers['Authorization'] = 'Bearer '+token
    url = 'https://a1-vip5.easemob.com/test/test/users?limit='+str(limit)+'&cursor='+cursor
    res = requests.get(url, headers=headers)
    res = res.content.decode("utf-8")
    res = json.loads(res)
    if res['count'] < int(limit):
        cursors = None
        print(cursors)
        ulistappend.append(res['entities'])# 整体追加
        ulistextend.extend(res['entities'])  # 扩展原来的list,分开追加
        return ulistappend, ulistextend
    else:
        cursors = res['cursor']
        print(cursors)
        ulistappend.append(res['entities'])
        ulistextend.extend(res['entities'])# 扩展原来的list,分开追加
        return getUsers(token, cursor=cursors)

def writeExcel(users, name):
    df = pd.DataFrame(users)
    df[['uuid', 'username', 'activated']].to_excel('hx_ulist.xlsx', sheet_name=name)

if __name__ == '__main__':
    token = getToken()
    ulistappend, ulistextend = getUsers(token, cursor='')
    print(len(ulistappend))
    print(len(ulistextend))
    """追加的一个列表包含三个列表的数据结构"""
    write = pd.ExcelWriter('ulistappend.xlsx')
    for i in range(len(ulistappend)):
        df = pd.DataFrame(ulistappend[i])
        df[['uuid', 'username', 'activated']].to_excel(excel_writer=write, sheet_name="page"+str(i+1))

    write.save()
    write.close()
    """扩展列表"""
    df2 = pd.DataFrame(ulistextend)
    df2[['uuid', 'username', 'activated']].to_excel('ulistextend.xlsx')


多个sheet:
在这里插入图片描述
同一个sheet:
在这里插入图片描述

发布了62 篇原创文章 · 获赞 11 · 访问量 8087

猜你喜欢

转载自blog.csdn.net/u013252962/article/details/101435649