获取随机唯一验证码
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后面的部分,再加一个分隔符,这样存的时候可以直接找到,保证唯一,简单有效。<p>
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()