首页 > 代码库 > python(三)

python(三)

数据类型和文件

1.1 python字典

字典书写格式:

  1. #!/usr/bin/env python
  2. #key-value
  3. info = {
  4. ‘stu1101‘: "zhangsan",
  5. ‘stu1102‘: "lizi",
  6. ‘stu1103‘: "wangwu",
  7. }
  • 查询
  1. print(info)
  2. print("select-->",info["stu1101"])
  3. #names = info["stu1101"]
  4. #print(names)
  5. print("get-->",info.get("stu1102")) #get方法
  6. 执行结果:
  7. {‘stu1103‘: ‘wangwu‘, ‘stu1101‘: ‘zhangsan‘, ‘stu1102‘: ‘lizi‘}
  8. select--> zhangsan
  9. get--> lizi
  • 增加
  1. info["stu1101"] = "add 1101"
  2. print(info)
  3. info["stu1104"] = "xiaosan" #不存在则增加
  4. print(info)
  5. 执行结果:
  6. {‘stu1103‘: ‘wangwu‘, ‘stu1101‘: ‘add 1101‘, ‘stu1102‘: ‘lizi‘}
  7. {‘stu1103‘: ‘wangwu‘, ‘stu1104‘: ‘xiaosan‘, ‘stu1101‘: ‘add 1101‘, ‘stu1102‘: ‘lizi‘}
  • 删除
  1. del info["stu1103"]
  2. print(info)
  3. 执行结果:
  4. {‘stu1102‘: ‘lizi‘, ‘stu1101‘: ‘zhangsan‘}
  • 多级字典嵌套
  1. #!/usr/bin/env python
  2. www = {
  3. "个人博客":{
  4. ‘name‘:["lizhong"],
  5. ‘address‘:["cloudstack.com"],
  6. },
  7. "运维社区": {
  8. ‘name‘: ["bjstack"],
  9. ‘address‘: ["bjstack.com"],
  10. },
  11. }
  12. www["个人博客"]["address"][0] += ",非常不错的个人博客,多多关注!"
  13. www["运维社区"]["address"][0] += ",社区活跃度非常高,期待你的加入!"
  14. print("猛击有惊喜-->",www["个人博客"]["address"])
  15. print("猛击有惊喜-->",www["运维社区"]["address"])
  16. 执行结果:
  17. 猛击有惊喜--> [‘cloudstack.com,非常不错的个人博客,多多关注!‘]
  18. 猛击有惊喜--> [‘bjstack.com,社区活跃度非常高,期待你的加入!‘]

1.2 set集合

1.去重,把一个列表变成集合,就自动去重了 
2.关系测试,测试两组数据之间的交集,差集,并集等关系。

创建一个数值集合

  1. list_1 = set{1,4,5,7,3,6,7,9}
  2. list_2 = set{2,6,0,66,22,8,4}
  • 交集(list_1 & list_2)
  1. print(list_1.intersection(list_2))
  • 并集
  1. print(list_1.union(list_2))
  • 差集
  1. print(list_1.difference(list_2))
  2. print(list_2.difference(list_1))
  • 子集
  1. print(list_1.issubset(list_2))
  • 父集
  1. list_3 = set([1,3,7])
  2. print(list_3.issubset(list_1)) #list_3是list_1的子集
  3. print(list_1.issuperset(list_3))
  • 对称差集(list_1 ^ list_2)
  1. print(list_1.symmetric_difference(list_2)) #对称差集,互相没有的取出来,去掉两个两个集合中重复的
  • 反向差集

  • 添加

  1. list_1.add(999) #添加一项
  2. list_1.update([888,777,555]) #添加多项
  3. print(list_1)
  • 删除
  1. print (list_1.discard(555)) #discard不存在不会报错
  2. print(list_1.remove(888)) #remove不存在,会报错,删掉了也不会返回数据
  3. print(list_1)

1.3 文件操作

  1. 文件句柄 = file (‘文件路径‘, ‘模式‘)
  2. 注:Python中打开文件有两种方式,open(...)和file(...) 本质上前者在内部会调用后者来进行文件操作,推荐使用open。
  3. python3中file模式已经取消
  • 1.打开文件
  1. 打开文件模式有:
  2. f = open(‘db‘,‘r‘) # 只读模式,{默认}
  3. f = open(‘db‘,‘w‘) # 只写模式,{不可读;不存在则创建;存在则删除内容;}
  4. f = open(‘db‘,‘a‘) # 追加模式,{可读;不存在则创建;存在则只追加内容;}
  5. f = open(‘db‘,‘x‘) # 文件存在,则报错;不存在,则创建并写内容
  6. "+"表示可以同时读写某个文件:
  7. f = open(‘db‘,‘r+‘) # 可读写文件,{可读;可写;可追加}
  8. f = open(‘db‘,‘w+‘) # 写读。
  9. f = open(‘db‘,‘a+‘) # 同a。
  10. "U"表示在读取时,可以将\r\n自动转换成\n (与r或r+模式同使用)
  11. f = open(‘db‘,‘rU‘)
  12. f = open(‘db‘,‘r+U‘)
  13. "b"表示处理二进制文件(如ftp上传ISO镜像,Linux忽略,windows处理二进制文件时需标注)
  14. f = open(‘db‘,‘rb‘) # 二进制只读
  15. f = open(‘db‘,‘wb‘) # 二进制只写
  16. f = open(‘db‘,‘ab‘) # 二进制追加
  17. f = open(‘db‘,‘r‘)
  18. data = f.read()
  19. print(data,type(data))
  20. f.close()
  • 2.操作文件
  1. f = open(‘db‘,‘r+‘,encoding="utf-8")
  2. data = f.read(1) # 如果打开模式无b,则read,按照字符读取
  3. print(f.tell()) # tell当前指针所在的位置(字节)
  4. f.seek(f.tell()) # 调整当前指着你的位置(字节)
  5. f.write("777") # 当前指针位置开始覆盖
  6. print(data) # 打印输出
  7. f.close() # 关闭当前文件
  8. 通过源码查看功能
  9. read() # 无参数,读全部;有参数,b字节,无b按字符
  10. tell() # 获取当前指针位置(字节)
  11. seek() # 指针跳转到指定位置(字节)
  12. write() # 写数据,b:字节,无b:字符
  13. close() # 关闭文件
  14. fileno() # 文件描述符
  15. flush() # 刷新文件内部缓冲区
  16. readline() # 仅读取一行
  17. truncate() # 截取,指针位置后的清空
  • 3.for循环文件对象
  1. f = open(“”)
  2. for line in f:
  3. print(line)
  • 4.文件修改
  1. # db文件里面有"xuliangwei"字符串
  2. f = open("db","r",encoding="utf-8")
  3. f_new = open("db.bak","w",encoding="utf-8")
  4. for line in f:
  5. if "xuliangwei" in line:
  6. line = line.replace("xuliangwei","xuliangwei.com")
  7. f_new.write(line)
  8. f.close()
  9. f_new.close()
  • 5.关闭文件
  1. f.close() #直接close文件
  2. 避免打开文件后忘记关闭,统一通过管理上下文,即:
  3. with open(‘db1‘,‘r‘) as f1, open("db2",‘w‘ )as f2:
  4. pass

1.4 Python字符编码转换

asiica 不支持中文 
utf-8 一个汉子:三个字节 
gbk 一个汉子:二个字节

Python3中默认字符编码是utf-8

  1. #!/usr/bin/env python
  2. name = ‘李众‘
  3. print(name.encode(‘UTF-8‘)) # 转为UTF-8编码
  4. print(name.encode(‘GBK‘)) # 转为GBK编码
  5. print(name.encode(‘ASCII‘)) # 转为ASCII编码

Python2.X中默认字符编码是unicode
技术分享

 

python(三)