#序列化模块 json #作用:将各数据类型转化成str/bytes型 #为了:1.固态的存储一个数据结构(一般是容器类数据类型) # 2.固态的传输一个数据结构。 #json所有语言都通用,但是不能接收所有的数据类型,可以接收的有:int/float/list/dict (set类型不可以!) #特殊:tuple : 元祖是以列表的形式被序列化的,反序列回来也是一个列表 #如果序列化的是dict,则里面的键要求必须全是字符形式。 #json可以一直dump进去,但是不能多次load. #dumps():序列化。转换成str # import json # dic = {'name':'alx', # 'age':33} # res = json.dumps(dic) e #字典转换成字符串后,里面的字符都变成“ 表示。 #loads():反序列化. 变回本来的样子。 # print(json.loads(res)) #将序列化后的字符串写入文件:dump() load() # with open('file','w') as f: json.dump(dic,f) # with open('file') as f1: print(json.load(f1)) #pickle模块 #优点:可以接收任何数据类型,可以连续dump和load. #缺点:json所有语言都通用,但是pickle只能在python中使用 #pickle.dumps():转换生成的是bytes类型. 写入文件的时候模式用‘w+' #pickle.loads():反序列化. 读取文件的时候用’r+' #shelve模块 #写入:f = shelve.open(文件) # f['key'] = 值 #读取:f = shelve.open(文件) # f['key']
sys模块 import sys #sys.path:模块导入遵循的路径. 大多数的模块都是遵循此路径导入的。 # print(sys.path) #sys.argv:将执行的文件路径、输入的内容放进一个列表中。[文件的路径,输入1,输入2] #在cmd中输入py 路径 输入1 输入2 #省去交互的麻烦 # if len(sys.argv)==3 and sys.argv[1] == 'liu' and sys.argv[2] == 'jun': # print('打开成功') # else: # print('没有通过') # exit()
import os # print(os.getcwd()) #执行该print所在的文件 #chdir(r+改变后的路径) 改变执行脚本所在的文件,以后的每一个操作都在新文件中完成。 # os.chdir(r'D:\py文件\15') #路径前面记得要转义 # print(os.getcwd()) #curdir(): '.' pardir():'..' #mkdir():在当前文件夹创建一个文件夹 # os.mkdir('创建') #makedirs():创造文件夹以及子文件夹 # os.makedirs('n1/n2/n3') #rmdir():删除单级空目录,如果不为空则报错 # os.rmdir('n1/n2/n3') #只删除n3,但是前面的母文件夹要都写上,才能找到n1. #removedirs() # os.removedirs('n1/n2') #n2为空,删除,然后看n1,也为空,再删除。 # print(os.getcwd()) # os.chdir(r'D:\py文件\16') #pwd # print(os.getcwd()) #cd # os.chdir(r'D:\py文件\16') #cd . # print(os.pardir) #cd .. # print(os.getcwd()) # os.makedirs('dirname1/dirname2') #mkdir -p # os.removedirs('dirname1/dirname2') #rm -r # os.rmdir('dirname1/dirname2') #listdir(目录) 将目录下的子文件夹或文件放进列表中,只放一层。 # print(os.listdir('D:\py文件')) #system() 执行shell命令,直接显示。 #popen() 执行shell命令,得到一个对象,用.read()读取。 # print(os.system('dir')) # print(os.popen('ipconfig').read()) #与path相关的 #abspath():输出绝对路径 # print(os.path.abspath('创建')) #输出'创建'文件的绝对路径。 #split(路径):将目录与文件本身分割成一个元祖。 # print(os.path.split(r'D:\py文件\17\创建')) #( 'D:\py文件\17' , '创建') # dirname() basename() # join() # print(os.path.dirname(r'D:\py文件\17\创建')) # print(os.path.basename(r'D:\py文件\17\创建')) # print(os.path.join(r'D:\py文件\17','创建')) #isabs():判断是否是绝对路径 # print(os.path.isabs(r'D:\py文件\17\创建')) #isfile():判断是否是文件。 # print(os.path.isfile(r'D:\py文件\17\创建\r')) #isdir():判断是否是目录 # print(os.path.isdir(r'D:\py文件\17\创建')) #getsize():判断文件或文件夹的大小。 #文件夹永远都是4096. # print(os.path.getsize(r'D:\py文件\17'))
#time模块 #时间戳(timestamp):time.time() import time # print(time.time()) #格式化时间(format string):time.strftime('%Y-%m-%d %H:%M:%S') %Y:2018 %y:18 %c:固定格式,星期 月 日 时间 年 # print(time.strftime('%c')) # print(time.strftime('%Y-%m-%d %H:%M:%S')) #结构化时间(stuct_time):time.localtime():当地的结构化时间(类似一个可命名元祖) time.gmtime():伦敦的结构化时间 # print(time.localtime()) # print(time.gmtime()) #时间戳与结构化时间与格式化时间的转换 #时间戳------>结构化时间:localtime/gmtime(参数) 结构化时间--->时间戳: mktime(参数) #格式化时间-->结构化时间:strptime('格式化时间','格式') # 结构化时间--->格式化时间:strftime('格式',struct_time) # g = time.time() # struct_time = time.gmtime(g) # form = time.strftime('%Y-%m-%d %H:%M:%S',struct_time) # stru = time.strptime(form,'%Y-%m-%d %H:%M:%S') # print(time.mktime(stru)) import time # def func(tim1,tim2,form = '%Y-%m-%d %H:%M:%S'): # stuct_time1=time.mktime(time.strptime(tim1,form)) # stuct_time2=time.mktime(time.strptime(tim2,form)) # stuct_time3=time.gmtime(stuct_time2 -stuct_time1) # return (stuct_time3.tm_year-1970, # stuct_time3.tm_mon-1, # stuct_time3.tm_mday-1, # stuct_time3.tm_hour, # stuct_time3.tm_min, # stuct_time3.tm_sec) # ti2 = '2018-5-22 11:06:50' # ti1 = '2018-5-21 12:59:50' # print(func(ti1,ti2)) # import json # dic = {'name':'大写','password':'123'} # with open('demo',encoding='utf-8',mode = 'w') as f:json.dump(dic,f,ensure_ascii=False) # with open('demo',encoding='utf-8') as f1:print(json.load(f1))
import random # s = '' # for i in range(6): # num = random.randint(0,9) # s += str(num) # print(s) # s = '' # for i in range(6): # num = random.randint(0,9) # nu = random.randint(97,122) # alp1 = chr(nu) # nu2 = random.randint(65,90) # alp2 = chr(nu2) # alp = random.choice([str(num),alp1,alp2]) # s += alp # print(s) # print(random.random()) # print(random.uniform(-1000,0)) # print(random.randint(-500,0)) # print(random.randrange(1,10,2)) # print(random.sample('456415',4)) # lis = [1,2,3,4,5,6] # random.shuffle(lis) # print(lis) #随机小数 #1.random.random():随机生成一个0-1之间的小数 # print(random.random()) #2.random.uniform(参数起始,参数结束):随机生成范围内的一个小数,不包括范围本身。 # print(random.uniform(1,5)) #随机整数 #1.random.randint(参数起始,参数结束):随机生成范围内的一个整数,包括范围本身。 # print(random.randint(1,10)) #2.random.rangrange(1,10,2):顾头不顾尾,可设置步长。 # print(random.randrange(1,10,2)) #随机输出列表或元祖或字符串等的元素 #1.random.choice(待随机输出的字符串或列表):只随机输出一个。 # print(random.choice([1,2,3,4])) #2.random.sample(待随机输出的字符串或列表,次数):随机输出想要的次数。 # print(random.sample([1,2,3,4,5,6,[1,2,2]],4)) #将列表随机排序(打乱顺序):random.shuffle #没有返回值 # lis = [1,2,3,4] # random.shuffle(lis) # print(lis) #验证码(随机生成6个数字) import random # s = '' # for i in range(6): # num = random.randint(0,9) # s += str(num) # print(s) #验证码(随机生成6个数字或字母大写或小写) s = '' # for i in range(6): # num = str(random.randint(0,9)) # al1 = chr(random.randint(97,122)) # al2 = chr(random.randint(65,90)) # alp = random.choice([num,al1,al2]) #放在一个列表中,用choice来随机输出某一个。 # s += alp # print(s)
一、random模块
二、time模块
三、os模块
四、sys模块
五、序列号模块