字典,#k-v
- l = ['韩敏','1111','423242','Qq.com','北京']#list
- info = {
- 'name':'韩敏',
- 'phone':11111,
- 'qq':2342352352,
- 'email':'[email protected]',
- 'addr':"北京"
- }# 字典
字典的增删改查
# 新增
方式一: info['phone'] = 110
存在'name'直接修改值, 如果不存在添加 key 和 value
方式二: info.setdefault('name','hanmin2')
- # 修改
- info['phone'] = 110 #key 存在修改, 不存在增加
- # 删除
- info.pop('qq')
- del info['qq']
- # 随机删除一个 key
- info.popitem()
- # 取值
方式一 print(info['phone1'])
方式二 print(info.get('phone'))
* 若取不存在的 key 时方式一报错, 方式二 none
例如:
- print(info.get('sex','男')) #sex 取到正常取值, 取不到返回男
- # 获取值
- print(info.keys())# 获取字典里所有的 key
- print(info.values())# 获取字典里面所有的 value
- # 清空 info.clear()
- # 两个字典合并, 交集替换, 并集添加
- info.update(stu)
- # 判断字典的 key 是否存在
- print('phone' ininfo)
- # 多层字典的操作
- print('==================')stu_info = {
- 'liudonghai':{
- 'house':['三环','四环','五环'],
- 'car':{
- 'china':['byd','五菱宏光','Hongqi'],
- 'jap':['丰田','本田'],
- 'Genmany':{
- 'ben-z':2,
- 'bmw':3,
- 'audi':5
- }
- }
- }
- }
- #1, 刘东海又买了一辆宝马
- stu_info['liudonghai']['car']['Genmany']['bmw']+=1
- print(stu_info)
- #2, 刘东海把 byd 扔掉了
- stu_info['liudonghai']['car']['china'].pop('byd')
- print(stu_info)
注册的程序
- #1, 输入账号密码
- #2, 账号如果不存在的话, 可以注册
- #3, 存在的话要提示账号已经存在.
- accounts = {
- "liuzhao":"123456",
- "liudonghai":"123456",
- "zhaowenming":"afssdfsdf",
- "xiaoming":"xxxx"
- }
- for i in range(3):
- username = input('username:')
- passwd = input('passwd:')
- if username in accounts:
- print('用户已存在, 不能注册!')
- else:
- accounts.setdefault(username,passwd)
- print('注册成功!')
- # print('accounts',accounts)
- for i in accounts:
- print(i)
循环字典
- accounts = {
- "liuzhao":"123456",
- "liudonghai":"123456",
- "zhaowenming":"afssdfsdf",
- "xiaoming":"xxxx",
- "users":[1,2,3,4]
- }
- for k in accounts:# 直接循环字典每次循环的时候取到的是字典的 key
print("%s => %s"%(k,accounts[k])) 同时取到 key 和 value "liuzhao => 123456"
- print('==================')
- for k,v in accounts.items():
print('%s => %s'%(k,v)) 同时取到 key 和 value 速度慢些 #list 和字符串循环, 都是循环元素
- #list 和字符串循环, 都是循环元素
- l = ['liuzhao', 'liudonghai', 'zhaowenming', 'xiaoming', 'users']
- s='liuzhaosefw423fwliuzhao'
- for i in l:
- print(i) #角标循环
- print(list(range(1,5))) #range(5) [0,1,2,3,4]
- print(i)
元组
元组是一个 list, 它不能修改, 通过下标取值
* 另外字符串也不能修改
定义 t = ('114.23.12.1','root','123456',3306)
操作
- t.count('1')# 统计元组中 1 出现的次数
- t.index('root')# 索引元组中'root'的下标值
文件读写
操作
- # 定义, 文件只能读不能写
- # 路径前需要加'r'
- f = open(r'users.txt',encoding='utf-8')#file() #python2
- result = f.read() #获取文件内容
- print(result)
- f.close()# 关闭文件
文件读写模式 默认为读模式
- f = open('users.txt','r')# 读 只能读不能写
- f = open('users.txt','w')# 写 只能写不能读
- f = open('users.txt','a')# 追加
- # 读模式, 只能读, 不能写, 打开不存在的文件会报错
- # 写模式, 只能写不能读, 会覆盖文件以前的内容, 文件不存在的会创建
- # 追加模式, 在原来文件的内容上增加新内容, 文件不存在的会创建, 只能写不能读
- f = open('users.txt','r+')# 读写模式
- f = open('users.txt','w+')# 写读模式
- f = open('users.txt','a+')# 追加读模式
文件指针操作
- f = open(r'test.txt','a+',encoding='utf-8')#r 就是原字符
- f.seek(0)# 读写最保险用法
- # print(f.read())# 读取文件里面所有的内容
- # print('8====',f.readline())# 读取一行的内容
- # print('readlines',f.readlines())# 读取一行的内容, 返回字符串格式
- # f.seek(0)# 移动文件指针
- #1, 只要是 r 有关, 打开不存在的文件都会报错.
- #2, 只要和 w 有关, 都会清空原来的文件
- #3,a + 文件指针默认是在末尾的, 如果想读到内容, 先要把文件指针移动到最前面
- f.writelines(l) #传一个 list 的话, 他会自动帮你循环, 把 list 里面每一个
或者
- l = ['a\n','b\n','c\n','e\n','g\n']
- f = open('nhy.txt','w',encoding='utf-8')
- for i in l:
- f.write(i+'\n')
- f.close()
练习见 #2-2 课上练习 - 监控日志
高效处理文件
- f = open('nhy.txt',encoding='utf-8')
- for line in f:# 获取文件中每一行的内容
- print('每次循环的内容是:',line)
修改文件
# 方式一简单直接粗暴的方式
1, 读取内容
2, 替换
3, 清除原来文件的内容
4, 把新的内容写进去
- f = open('nhy.txt','a+',encoding='utf-8')
- f.seek(0)
- result = f.read()
- content = result.replace('xiaolan','dalan')# 替换
- f.seek(0)
- f.truncate()# 清空文件内容
- f.write(content)
- f.close()
- f2 = open('nhy.txt','w')
- f2.write(content)
- # 方式二逐行处理
- #1, 打开 a 文件, 在打开一个 b 文件
- #2, 从 a 文件读一行, 修改, 修改之后写到 b 文件里
- #3, 删除 a 文件, 把 b 文件的名字改成 a 文件
- f = open('nhy.txt',encoding='utf-8')
- f2 = open('nhy2.txt','w',encoding='utf-8')
- for line in f:
- result = line.upper()
- f2.write(result)
- f.close()
- f2.close()
- import os
- os.remove('nhy.txt')
- os.rename('nhy2.txt','nhy.txt')
不用关闭文件的方式
- with open('nhy.txt') as f, open('nhy2.txt','w') as f2: # f = open('nhy.txt')
- f = f.read()
- f2.write('xx')
来源: http://www.bubuko.com/infodetail-3078559.html