Python学习笔记-17.09.25
来源:互联网 发布:天猫dw美工教程 百度云 编辑:程序博客网 时间:2024/05/17 23:19
Python学习笔记-17.09.25
输入一串字符,计算并输出里面每个字符的出现次数
mystr = input("请输入任意内容")tongji = {}for s in mystr: n = tongji.get(s) if n is None: tongji.__setitem__(s,1) else: tongji.__setitem__(s,n+1)#字符串格式化for key in tongji: print("{0} 出现了 {1}次".format(key,tongji.get(key)))print("------------------------")dict= sorted(tongji.items(), key=lambda d:-d[1])for d in dict: print("{0} 出现了 {1}次".format(d[0],d[1]))print("------------------------")dict= sorted(tongji.items(), key=lambda d:(-d[1],d[0].encode('gbk')))for d in dict: print("{0} 出现了 {1}次".format(d[0],d[1]))
这段代码是通过字典的特性完成,因为key不可重复,所以当字典中没有找到这个字符时,即次数为零,添加一个新的键值对,并把次数设置为1。当字典中已存在这个key时,把它的次数加一。
而后面的排序是通过lambda,因为用了serted函数进行排序,所以返回的是一个列表,里面储存的是元组,key=lambda d:(-d[1],d[0].encode(‘gbk’)))是通过元组的第二个元素,也就是原来字典中的value进行排序,我们的value储存的是字符出现次数,也就是根据次数进行排序。
而d[0].encode(‘gbk’)是根据key进行排序,我需求的是根据拼音进行排序,而字符编码gbk可以做到到,所以用.encode(‘gbk’)来完成。
IO
f = open("G:/file/a/test.txt")of = open("G:/file/b/test.txt","w")for line in f: of.write(line)print("ok")f = open("G:/file/a/pic.bmp",'rb')of = open("G:/file/b/pic.bmp",'wb')# of.write(f.read())f.seek(0,2)size = f.tell()print(round(size/1024/1024,2),"MB")f.seek(0,0)ofSize = 0while True: if ofSize>size: break str = f.readline(1024*10) of.write(str) of.flush() ofSize += 1024*10print("ok")
open() 将会返回一个 file 对象,我们通过操作这个对象来进行文件操作
语法:open(filename, mode)
mode模式
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
我们可以直接通过read()后write()来直接进行读写,因为read在不指定读写大小时是直接读取整个文件,但是这样效率不高,所以我们一般设置一个读写缓存区,在上面代码中,seek()方法可以跳到文件指定位置,我们可以通过这个方法来获取文件的大小,来判断我们的缓存区域需要循环多少次才能完成这次读写。
import pickle,pprintclass Person: name = None age = None def __init__(self,name,age): self.name = name self.age = age def __str__(self): return ("name:{0},age:{1}".format(self.name,self.age))p = Person('zs',18)f = pickle.dump(p,open("G:/file/a/person.data",'wb'))pprint(pickle.load(open("G:/file/a/person.data",'rb')))
通过pickle序列化模块,我们可以把对象保存在本地并读写。
异常
class Aex(Exception): def __str__(self): return "Aex"class Bex(Exception): def __str__(self): return "Bex"class Cex(Exception): def __str__(self): return "Cex"n = int(input("请输入整数"))try: if n == 1: raise Aex() if n == 2: raise Bex() if n == 3: raise Cex() print("ok")except(Aex,Bex,Cex) as e: print(e)
我们通过继承Exception来自定异常
而Python中通过try except来进行异常处理。raise 抛出异常
- Python学习笔记-17.09.25
- Python学习笔记25
- Python学习笔记-17.09.08
- Python学习笔记-17.09.10
- Python学习笔记-17.09.13
- Python学习笔记-17.09.15
- Python学习笔记-17.09.18
- Python学习笔记-17.09.20
- Python学习笔记-17.09.22
- Python学习笔记-17.09.27
- Python学习笔记--2016.07.25
- 【python】:python学习笔记
- Python学习笔记-Python起步
- Python学习笔记-Python基础
- Python学习笔记-Python对象
- Python基本概念--Python学习笔记
- Python学习笔记:Python函数
- python学习笔记-python安装
- 一句话概括hashMap底层
- 设计模式--装饰器(Decorator)模式
- A Simple Problem with Integers POJ
- 进程的周期Sched
- UVA 1635 Irrelevant Elements(杨辉三角+递推式求组合数+算数基本定理)
- Python学习笔记-17.09.25
- python基础 输入与输出
- Shell编程基础
- Opencv-Python :图片读取、保存、显示
- Windows10上安装tensorflow-gpu流程
- mysql的学习路程--DDL
- Git 常用操作(一)
- 封装jdbc的crud操作
- 不完全浅析Tarjan求强连通分量(SCC)