#序列化模块 #数据类型转化成字符串的过程 #为了方便存储和网络传输 #三种模式: #json: #dumps #loads #dump 和文件有关 #load 不能load多次 # import json # data = {'username':['梨花','二恶能子'],'sex':'male','age':16} # json_dic = json.dumps(data,sort_keys=True,indent=4,separators=(',',':,'),ensure_ascii=False) # print(json_dic) #pickle: #方法与json一样 #dump和load的时候,文件是以rb,wb #支持python所有的数据类型 #shelve: #open方法 #获取了一个文件句柄 #操作和字典类似 # 把解决一类问题的模块放在同一个文件夹里 —— 包 # import os # os.makedirs('glance/api') # os.makedirs('glance/cmd') # os.makedirs('glance/db') # l = [] # l.append(open('glance/__init__.py','w')) # l.append(open('glance/api/__init__.py','w')) # l.append(open('glance/api/policy.py','w')) # l.append(open('glance/api/versions.py','w')) # l.append(open('glance/cmd/__init__.py','w')) # l.append(open('glance/cmd/manage.py','w')) # l.append(open('glance/db/models.py','w')) # map(lambda f:f.close() ,l) # import glance.api.policy as policy # policy.get() # # from dir.glance.api import policy # policy.get() # import sys # sys.path.insert(0,'C:\Users\Administrator\PycharmProjects\s9\day21\dir') # # print(sys.path) # from glance.api import policy # policy.get() # from dir import glance # glance.db.models.register_models('mysql') # glance.api.policy.get() # 使用绝对路径 不管在包内部还是外部 导入了就能用 # 不能挪动,但是直观 # from dir import glance # glance.api.policy.get() # 相对路径 # 可以随意移动包 只要能找到包的位置,就可以使用包里的模块 # 包里的模块如果想使用其它模块的内容只能使用相对路径,使用了相对路径就不能在包内直接执行了 # 1/0 # name # 2+'3' # [][3] #{}['k'] # try: # print('1111') # # 1/0 # print('2222') # # name # # 2+'3' # # [][3] # # {}['k'] # ret = int(input('number >>>')) # print(ret*'*') # except ValueError: # print('输入的数据类型有误') # except Exception: # print('你错了,老铁') # else: # print('没有异常的时候执行else中的代码') # print('===========') # def func(): # try: # f = open('file','w') # '''''' # return True # except: # return False # finally: # print('执行finally了') # f.close() # # print(func()) # 程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容 # 使用try和except就能处理异常 #try是我们需要处理的代码 #except 后面跟一个错误类型 当代码发生错误且错误类型符合的时候 就会执行except中的代码 #except支持多分支 #有没有一个能处理所有错误的类型 : Exception # 有了万能的处理机制仍然需要把能预测到的问题单独处理 # 单独处理的所有内容都应该写在万能异常之前 # else : 没有异常的时候执行else中的代码 # finally : 不管代码是否异常,都会执行 # finally和return相遇的时候 依然会执行 # 函数里做异常处理用,不管是否异常去做一些收尾工作 # try: # main() # except Exception: # pass # try: # print('1111') # # 1/0 # print('2222') # # name # # 2+'3' # # [][3] # # {}['k'] # ret = int(input('number >>>')) # print(ret*'*') # except Exception as error: # print('你错了,老铁',error)