背景描述
兄弟小组来了个脱敏需求,希望将一些文件里客户资料和账户密码等信息做脱敏处理。
本来是想在项目里处理的,可是考虑到数据和文档并非是在项目中给出,因而决定使用python来处理,更加简单。
(这是第二次写python脚本,哪里有问题,请大家评论里指出。)
原料
py 3.9 版本,PyCharm 2020.2.3 x64版本,CSV文件
源码在文章里。
代码开发
python脚本如下:
import pandas as pd #导入pandas包
import sys
def main():
filePath = sys.argv[1] #入参1 文件路径
type = sys.argv[2] #入参2 文件类型,不同文件类型对应不同处理方法
print(filePath)
print(type)
# filePath = 'D:/Code/pythonProject/VIP_KHXX20211203.csv' #测试地址
#type = 1
if type== '1':
# 1
# 如果执行后文件的编码格式有问题,可以在encoding这里来解决
df = pd.read_csv(filePath,encoding='ANSI', header=0) #读文件 核心逻辑开始
#print(df)
df['客户名称'] = '张三' #把df里客户名称这一列全部设为某个值
df['证件号码'] = '123456789012345678' #把df里证件号码这一列全部设为某个值
print(df)
df.to_csv(filePath, mode="w",encoding='ANSI' ,index=False) # 写入文件 #核心逻辑结束
else :
if type== '2':
#2
df = pd.read_csv(filePath,encoding='ANSI', header=0)
#print(df)
# df['交易密码'] = '锨潘拖儇'
# df['资金密码'] = '锨潘拖儇'
df['邮箱'] = '12345678@126.com'
df['手机号码'] = '12345678901'
print(df)
df.to_csv(filePath, mode="w",encoding='ANSI' ,index=False) # 写入新文件
else:
if type =='3':
# 3
df = pd.read_csv(filePath, encoding='ANSI', header=0)
# print(df)
df['KHXM'] = '张三'
df['ZJHM'] = '123456789012345678'
df['MOBILE'] = '12345678901'
df['DH'] = '021-12345678'
df['EMAIL'] = '12345678@126.com'
df['DZ'] = '上海市徐汇区xx路'
# df['JYMM'] = '锨潘拖儇'
# df['ZJMM'] = '锨潘拖儇'
print(df)
df.to_csv(filePath, mode="w", encoding='ANSI' ,index=False) # 写入新文件
print("完成")
if __name__ == '__main__': # 入口
main()
实践效果
执行 python CSV.py param1 param2 命令
(参数1和参数2分别是 路径和 文件类型,针对不同的文件类型将进行不同的字段脱敏。
你可以针对这段代码稍加更改,使之符合你的要求。)
就可以实现对excel文档里的敏感字段进行脱敏。(本机测试截图)
结果展示,本机测试数据
备注
1、执行代码需要考虑文件的编码格式,文件的编码格式应当在py执行前后保持不变。具体方案可以去看代码。我代码有注释。
/
2、如果要到linux环境使用,需要在服务上配置py3和pandas,pandas版本太高会有问题。可以参考这个版本
配置好之后就可以在linux上随便找个目录执行 命令了。
参考内容
https://blog.csdn.net/m0_37530301/article/details/110531728?spm=1001.2014.3001.5502
https://github.com/WuJonah/py_autoTest
https://www.liaoxuefeng.com/wiki/1016959663602400
其实还有很多参考,但过去一两周了,找不太到了。
想学习python又不想看英文的可以去看看廖雪峰的博客。第三个网址就是。