Python脚本之准备测试环境的用户数据

2023-05-16

本文为博主原创,未经授权,严禁转载及使用。
本文链接:https://blog.csdn.net/zyooooxie/article/details/127645678

这期是讲述下 我准备测试环境用户数据的经历。

【实际这篇博客推迟发布N个月】

个人博客:https://blog.csdn.net/zyooooxie

【以下所有内容仅为个人项目经历,如有不同,纯属正常】

经历

之前测试环境的用户 我造的时候 user_id是Faker生成的;union_id直接取了 user_id的前15位,有天我测缓存时,发现有问题:union_id出现了重复的情况,所以我清掉所有相关记录后,想着 重新造一批数据:还是用测试环境本就有的用户 + 调整union_id后的值。

就找大佬捞了 100w用户信息,只要2个字段:手机号(明文)+ user_id。因为我这边项目 要用到加密手机号(需要请求一个加密接口),我就写了脚本来跑: https://blog.csdn.net/zyooooxie/article/details/100106284。


# 当晚跑了后,我查看本地日志,

# 第一条是 读取txt用户信息,放入队列后,队列的长度;
19:51:08-wc_performance_test.py-main_1101-line:96-INFO:1000000

# 第二条 是成功加密,已经写入新的txt_1 的长度;
22:38:12-wc_performance_test.py-write_txt-line:210-INFO:998746

# 第三条是没有拿到响应的(我设置 超时时间为0.5s),写入新的txt_2 的长度。
22:38:13-wc_performance_test.py-write_txt-line:210-INFO:1254

# 就 重新跑 失败的这些,第一条是 新读取txt_2 用户信息,放入队列后,队列的长度;
22:47:03-wc_performance_test.py-main_1101-line:96-INFO:1254

# 第二条 到 第五条是 每次起100个线程,跑过程中 队列的长度 逐渐变小,当队列长度小于线程数,我是直接将其扔到 失败list; 
22:47:10-wc_performance_test.py-main_1101-line:96-INFO:354
22:47:10-wc_performance_test.py-main_1101-line:96-INFO:254
22:47:11-wc_performance_test.py-main_1101-line:96-INFO:154
22:47:11-wc_performance_test.py-main_1101-line:96-INFO:54
22:47:11-wc_performance_test.py-main_1101-line:102-INFO:小于线程数:54

# 第六条是 成功加密,已经写入新的txt_3 的长度;
22:47:11-wc_performance_test.py-write_txt-line:210-INFO:994

# 最后一条是 没有拿到响应的(我设置 超时时间为0.5s)+ 小于线程数时的,写入新的txt_4 的长度。
22:47:11-wc_performance_test.py-write_txt-line:210-INFO:260

此时,我将 txt_3的内容 复制 到 txt_1时,复制完了,我看 整个txt_1的行数 超了100w,这不扯呢?明明还有260条没加密的,咋可能就超了?

发现、解决问题

去除 我不小心多复制的记录

Counter类

ABC = [(k, v) for k, v in abc.items() if v != 1]

在这里插入图片描述

去除 重复手机号

ABC = [d[0] for d in ABC]

在这里插入图片描述

去除 非11位手机号

all_data_list_2 = [adl[0] for adl in all_data_list if len(str(adl[0])) != 11]

在这里插入图片描述

去除 异常user-id

all_data_list_3 = [adl[1] for adl in all_data_list if len(adl[1]) <= 15]

在这里插入图片描述

代码

"""
@blog: https://blog.csdn.net/zyooooxie
@qq: 153132336
"""

def test_1101():
    """
    用户信息txt文件 去重
    :return:
    """
    
    all_data_list = read_txt_func(file=r'D:\100W用户4.txt', get_all='True')
    Log.info(len(all_data_list))

    all_data_list_2 = [adl[0] for adl in all_data_list if len(str(adl[0])) != 11]
    Log.info(len(all_data_list_2))
    Log.info(all_data_list_2)

    # all_data_list_2 = dict.fromkeys(all_data_list_2)

    all_data_list_3 = [adl[1] for adl in all_data_list if len(adl[1]) <= 15]
    Log.info(len(all_data_list_3))
    Log.info(all_data_list_3)

    # all_data_list_2 =[(str(adl[0]), *adl[1:]) for adl in all_data_list if adl[0] not in all_data_list_2]
    # Log.info(len(all_data_list_2))

    all_data_list_1 = [adl[-1] for adl in all_data_list if adl[-1].endswith('%3D')]
    Log.info(len(all_data_list_1))

    # abc = Counter(all_data_list_1)

    # ABC = [(k, v) for k, v in abc.items() if v != 1]
    # Log.info(ABC)

    # ABC = [k for k, v in abc.items() if v == 1]
    # ABC = {k: None for k, v in abc.items() if v == 1}

    # all_data_list_2 = [tuple(adl) for adl in all_data_list if adl[0] in ABC]
    # all_data_list_2 = [(str(adl[0]), *adl[1:]) for adl in all_data_list if adl[0] in ABC]
    # Log.info(len(all_data_list_2))

    # ABC = [d[0] for d in ABC]
    #
    # ABC.extend([k for k, v in abc.items() if v == 1])
    # Log.info(len(ABC))
    # ABC = [(str(d[0]), *d[1:]) for d in ABC]
    #
    # write_txt(all_data_list_2)


def write_txt(data: Union[str, list]):
    """
    将加密结果 写入文件(可一条一条写入,也可一次性全部写入)
    :param data:单独一条记录str or  全部记录list
    :return:
    """
    file = r'D:\param_{}.txt'.format(random.randint(1, 99999))

    ls = os.linesep

    with open(file, mode='a', encoding='utf-8') as f:
        if isinstance(data, str):
            # f.write(''.join([data, ls]))
            f.write(''.join([data, '\n']))

        elif isinstance(data, list):
            Log.info(len(data))

            data = [''.join([d, '\n']) if type(d) == str else ''.join([','.join([*d]), '\n']) for d in data]

            f.writelines(data)

反思、最终生成的txt

从没想到 最初的txt文件中的用户信息 会有坑;换个角度想想:同一用户手机号,多条user-id,应该是注销后,再次注册;非11位手机号,是港澳台、海外用户;

最后生成的txt:

在这里插入图片描述

本文链接:https://blog.csdn.net/zyooooxie/article/details/127645678

个人博客 https://blog.csdn.net/zyooooxie

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python脚本之准备测试环境的用户数据 的相关文章

  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • SQLALchemy .query:类“Car”的未解析属性引用“query”

    我有一个这里已经提到的问题https youtrack jetbrains com issue PY 44557 https youtrack jetbrains com issue PY 44557 但我还没有找到解决方案 我使用 Pyt
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 关于驱动程序的可移植性

    差不多所有的linux内核设备驱动都可以运行在不止一种处理器上 这仅仅因为设备驱动作者遵循一些重要规则 这些规则包括使用合适的变量类型 xff0c 而不是依赖于特定内存页大小 xff0c 提防外部数据的大小端模式 xff0c 设立合适的数据
  • centos7 安装mysql详细流程

    工作中经常需要安装mysql xff0c 每次安装的时候 xff0c 总是用不同的方法安装 xff0c 有错误就解决一下 xff0c 今天又重新装了一次mysql xff0c 记录下过程 xff0c 以后就用这种方式安装了 xff01 1
  • 10000端口无法运行

    1 查询端口 netstat ano findstr 10000 2 查询端口名 tasklist findstr 1572 3 关闭端口 taskkill pid 1572 F
  • Cmake编译-CMAKE_C_COMPILER-NOTFOUND解决

    第一次写博客 xff0c 其实就是记录一下从零开始的学习之路上遇到的各种 bug xff0c 一方面为了防止忘了犯过的错误 xff08 比如下一次 xff09 xff1b 另一方面为了从错误中汲取经历 分析 bug 之前 xff0c 记录一
  • libcurl官方实例代码(HTTP,FTP,上传下载等等)

    http curl haxx se libcurl c example html Some of the Examples simple HTTP simple c shows how to get a remote web page in
  • stm32驱动NRF24L01_原理+代码解析

    目录 概念 废话篇 xff08 24L01简介 xff09 引脚分配 工作模式 通信地址理解 xff08 个人疑难点 xff09 原理分析 寄存器赏析 寄存器操作指令 配置寄存器 xff08 CONFIG xff0c 位置 xff1a 0X
  • CSS实现进度条和订单进度条

    由于近期需要做一个订单进度条 xff0c 比较直观的反应当前订单的状态 xff0c css样式借鉴了网上的相关代码 xff0c 下面是效果图 xff0c 以及实现说明 一 说明 1 首先页面需要引入jQuery的相关js 一般页面都已经引入
  • ROS中CANopen的使用(1)

    ROS中CANopen的使用 xff08 1 xff09 今天终于实现了通过ros来控制无人车 xff0c 心情非常激动 xff0c 先简要记录 工作环境 工控机使用的Ubuntu18 02 xff0c can卡采用的innodisk的UC
  • 组合导航在ROS中的解析(2)

    工作环境 ubuntu18 02 xff0c 组合导航使用网口接口 xff0c ros使用melodic实现过程 include lt ros ros h gt include lt stdio h gt include lt stdlib
  • 上位机与下位机进行交互

    一 上位机与下位机 xff08 1 xff09 什么是上位机 上位机是指可以直接发出操控命令的计算机 这里使用的是winfrom xff08 2 xff09 什么是下位机 下位机是指直接控制设备获取状况的计算机 xff0c 一般是PLC 单
  • alist无法访问文件 提示“failed get link ”这样修复

    阿里网盘挂载alist无法访问文件 xff0c 提示 failed get link invalid X Device Id xff1f 34 Failed get link invalid X Device Id 34 是挂载阿里云网盘到
  • STM32F4应用-串口通信

    STM32F4应用 串口通信 1 基本介绍1 1 简介1 2 串口协议1 3 通信过程 2 配置过程2 1 引脚复用2 2 配置步骤2 3 例子 参考文献 1 基本介绍 1 1 简介 串口通信涉及USART TX RX xff0c GND三
  • 使用ADB命令来停用、卸载荣耀20 PRO的系统应用

    今年双十一买了部荣耀20 Pro手机 xff0c 某天感觉某个系统应用 系统更新 贼烦人 xff0c 过段时间就提醒一次 xff1b 我就被逼着上网搜有没有思路 xff0c 然后就打开了罪恶的大门 个人博客 xff1a https blog
  • Python笔记【二】

    之前分享过一次我在学习Python的笔记 xff0c Python笔记 一 xff0c 最近有些新的收获 xff0c 分享一下 xff1b 个人博客 xff1a https blog csdn net zyooooxie random sa
  • Fiddler 使用命令行和Filters

    本文为博主原创 xff0c 未经许可严禁转载 本文链接 xff1a https blog csdn net zyooooxie article details 109020837 之前分享过一期 Fiddler断点 修改响应数据 xff0c
  • 代码改变生活-使用You-Get下载bilibili的视频【一】

    本文为博主原创 xff0c 未经许可严禁转载 本文链接 xff1a https blog csdn net zyooooxie article details 111307733 这篇分享是我在csdn的第100篇原创了 xff0c 真的是
  • Appium app自动化测试经验分享-find_element_by_android_uiautomator ()【二】

    本文为博主原创 xff0c 未经许可严禁转载 本文链接 xff1a https blog csdn net zyooooxie article details 113868447 之前分享过 find element by android
  • 数据完整性测试之【三】Redis缓存和数据库表里的记录

    本文为博主原创 xff0c 未经授权 xff0c 严禁转载及使用 本文链接 xff1a https blog csdn net zyooooxie article details 119377944 前面分享过 接口返回值 和 表记录 的校
  • Python笔记【十一】

    本文为博主原创 xff0c 未经授权 xff0c 严禁转载及使用 本文链接 xff1a https blog csdn net zyooooxie article details 123655926 继续学习Python xff0c 继续更
  • Python脚本之准备测试环境的用户数据

    本文为博主原创 xff0c 未经授权 xff0c 严禁转载及使用 本文链接 xff1a https blog csdn net zyooooxie article details 127645678 这期是讲述下 我准备测试环境用户数据的经