python 学习(字典,文件,pickle)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_27295149/article/details/102639953

字典

字典:键值对形式的数据类型。键必须可哈希的(经过hash 函数值不变),值可以为任意类型。

# 字典的创建
d = {'a':1, 'b':2, 'c':3}
# 字典的获取
d['a']	# 不存在的键会报异常
d.get('a') # 不存在的键不会报异常
d.get('a', 0) # 找不到返回默认的值 这里是0
# 将键'a'键值弹出
d.pop('a')
# 更新键为'a'的值
d.update('a',2)
d['a'] = 2
# 获取所有的键
d.keys()
# 获取所有的值
d.values()

# items()方法 d.items是 一个list, 每个子元素有键和值
for k, v in d.items():
	print('{}=>{}'.format(k,v))
# 返回 a=>1 b=>2 c=>3 

# collections 中有与c++的struct使用方法相似的类型
# 使用方法
from collections import namedtuple
# 声明
Emp = nametuple('Emper',['name','age','department','salary'])
# 创建
jerry = Emp('Jerry', age=30,department='财务部',salary=900)
# 使用
jerry.name # 就是 'Jerry'

# collections 还有defaultdict 默认参数类型的字典,可以避免参数
from collections import defaultdict 
mydict = defaultdict(int) # 未使用的key默认值为0
mydict = defaultdict(list) # 未使用的key默认值为[]

文件处理

# 基本模式 
file = open(filename, mode)
# mode可以是r只读, w写(先清再写如), a写(接文件的末尾写入), b 二进制(rb,rw)
# 实例 
l = open('hello.txt').readlines()
l.read() # 读取所有
l.readline() # 读取一行
l.readlines() # 读取所有
l.close() # 关闭文件流
# 特别大文件 可以按行读 按字节读 按块读
# 按行读取
f = open('hello.txt').readlines()
while True:
    line = f.readline()
    if not line:
        break
        
# 按字节读取
while True:
    # 每次读取一个字符
    ch = f.read(1)
    # 如果没有读到数据,跳出循环
    if not ch:
        break
    # 输出ch
    print(ch, end='')
    
# 按块读取
# 1024*1024 1M
def read_in_chunks(filePath, chunk_size=1024*1024):
	file_object = open(filePath)
	while True:
		chunk_data = file_object.read(chunk_size)
		if not chunk_data:
			break
		yield chunk_data
# 注yield 类似return 但不终止函数

# 使用with更简单的方法
with open(filename) as f:
	# for line in f文件对象f视为一个迭代器,会自动的采用缓冲IO和内存管理,所以不必担心大文件。
  for line in f:
    print(line) 

# 写入
# 整个字符串写入
file.write(str)
# 每次取一个元素写入,不自带换行符 须 + '/n'
file.writelines(sequence)

pickle

# 可以将python变量,以二进制形式保存 P.S python 万物皆对象所以可以存一切python变量
f = open('test.pkl','wb')
# 将d变量存 到f中
pickle.dump(d,f)
# 读取变量
pickle.load(f)
f.close()

python 数据类型总结集合 序列:可变list,不可变str tuple 字节 映射(字典表) 集合

数字 int boolean float
可调用 函数function 生成器generate 类class 方法
其他 文件 None 视图
内部 type

猜你喜欢

转载自blog.csdn.net/qq_27295149/article/details/102639953