【实现&调用】实现可被简单调用的python函数

0x00 前言

本篇破事水

@ZoeCUR 在学习WEB安全课程上,有一个对于用户密码的数据分析处理问题,懒惰的孩纸们表示数据处理还是挺麻烦的,吾辈夸下海口10分钟之内搞定

然后就有了这段主体部分25行的破事水——

需求:读入文件,去重;查询重复条目数;有的文件包含序号前缀,需要去掉;文件多为百兆或GB级别,复杂度要较低。


0x01 实现

#coding=utf8
# ========================================================
#   Copyright (C) 2016 All rights reserved.
#   
#   filename : CDUnique.py
#   author   : okcd00 / chendian@baidu.com
#   date     : 2016-10-25
#   desc     : Unique and output custom attributes
# ======================================================== 
"""
    usage:
    from CDUnique import *
    ret = CDUnique( <path>, <mode>, <repeat> )
    ret = CDUnique( path, [all/no-head], [False, True],)
"""
    
import os,sys

def uniqueList(inlist): # Unstable for MarkLR, 'inlist' is stableList
    dict = {}
    for each in inlist:
        dict.setdefault(each,0)
        dict[each] += 1
    #return list(set(inlist))
    #outlist.sort(key=lambda x: len(x))
    return dict.keys()

def CDUnique(path, mode='all', repeat=False):
    # Check Existance
    if not os.path.exists(path):
        print "ReadFile ERROR: File not found"
        return None
    
    # Get InputList
    if mode == 'no-head': inpList = [':'.join(l.strip().split(':')[1:]) for l in file(path)]
    else: inpList = [line.strip() for line in file(path)]
    
    # Output Attribute
    if repeat: 
        uniqList = list(set(inpList))
        return inpList.__len__() - uniqList.__len__()
    else: 
        uniqList = uniqueList(inpList)
        return uniqList
        


0x02 调用方法
from CDUnique import *

ret = CDUnique('in.txt', 'no-head', False)
print ret
#for e in ret: print e


0x03 要点?

这段代码其实几乎没用到任何高大上的东西,主要是想体现一个熟练工(伪)的速敲情怀。

一般来说如果需要进行功能实现的话,要求高点的话封装成类,要求低点的话就做成一个单文件可以被import直接调用,无论是在大型的工程项目还是简单的课堂作业上,都是一个用者省心,写者易改的感觉。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果天王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值