python小程序集合

获取随机唯一验证码

import random
import string
def activation_code(id,length=10):
    prefix = hex(int(id))[2:]+'M' 
    length = length-len(prefix)
    chars = string.ascii_letters+string.digits
    return prefix + ''.join([random.choice(chars)for i in range(length)])
def get_id(code):
    return str(int(code.upper(),16))
if __name__=='__main__':
    for i in range(10,500,35):
        code = activation_code(i)
        code_id = code.split('M')[0]
        id = get_id(code_id)
        print (code,id)
  • 关键:随机且唯一,用数字和字母组合,参考网上的写法,就是用数字加分隔符加随机字符串的形式,这样写可以保证唯一,前面的数字转成16进制,然后取0x后面的部分,再加一个分隔符,这样存的时候可以直接找到,保证唯一,简单有效。

    join([random.choice(chars)for i in range(length)])这个看上去乱七八糟的参数,是一个列表生成器。


统计某文件下写过多少行文件and注释

  • 关于glob模块:
  • glob.glob(filename),返回所有匹配的文件路径列表,注意,是‘路径’,参数可以是相对也可以是绝对路径。
list = glob.glob(r'*.txt')#匹配txt文件,*代表任意多字符
list = glob.glob(r'../*.py')#相对路径,匹配以python文件
list = glob.glob(r'?.py')#匹配文件名只有一个字符的python文件
list = glob.glob(r'[0-9].py')#匹配指定范围的字符,[0-9]匹配数字
  • iglob(),获取一个可遍历的对象,与glob的区别是,glob直接返回一个列表,iglob返回的是一个存储着匹配的文件路径的可遍历对象,如果想获得里面的值,要遍历出来(for循环)
def count_lines():
    print(files)
    line_sum,blank,note=0,0,0
    f = open('./test.txt','r')
    lines = f.readlines()
    print (lines)
    length = len(lines)
    print (length)
    #遍历每个文件的每行来看是代码还是\n还是注释
    for line in lines:
        print (line)
        if line.startswith('#'):
            #startswith不是startwith,太他妈坑了!
            note += 1
        elif line == '\n':
            blank +=1
    print (length,blank,note)
if __name__ == '__main__':
    count_lines()

你可能感兴趣的:(python小程序集合)