随机产生一个手机号,保证不重复

时间:2022-03-06 18:36:17

import random
import os.path

def get_mobile_no(mobile_no_file_path):

    mobile_no =""
    prifix =[135,136,137,138,150,159,188]

    while 1:
#随机选择一个开头 mobile_prifix
=random.choice(prifix)
#随机生成后八位 mobile_postfix
=random.randint(10000000,99999999)
#拼接 mobile_no
=str(mobile_prifix) str(mobile_postfix)
#判断文件是否存在
try: with open(mobile_no_file_path,"a ") as fp:
#判重逻辑
if mobile_no in fp.read(): continue
#写入文件 fp.write(mobile_no "n") break except Exception as e: with open("no.txt","a ") as fp: if mobile_no in fp.read(): continue fp.write(mobile_no "n") break return mobile_no print(get_mobile_no("d:\no2.txt"))

 

 

生成八位随机数也可以用zfill

Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。

代码改动:

import random
import os.path

def get_mobile_no(mobile_no_file_path):

    mobile_no =""
    prifix =[135,136,137,138,150,159,188]

    while 1:
        mobile_prifix =random.choice(prifix)
        mobile_postfix =str(random.randint(0,99999999)).zfill(8)#从0开始,用zfill生成八位数
        mobile_no =str(mobile_prifix) str(mobile_postfix)
        try:
            with open(mobile_no_file_path,"a ") as fp:
                if mobile_no in fp.read():
                    continue
                fp.write(mobile_no "n")
                break
        except  Exception as e:
            with open("no.txt","a ") as fp:
                if mobile_no in fp.read():
                    continue
                fp.write(mobile_no "n")
                break
    return mobile_no

print(get_mobile_no("d:\no2.txt"))

 

 

遗留问题:用列表序列化做?