05文件的读写+字典

文件内容如下:
我住长江头,
君住长江尾,
日日思君不见君,
共饮长江水。

filpath = r'Y:\version\note.txt'
file1 = open(filpath)
print(file1.read())#read读取全部
file1.seek(0)#让光标回到最前面,0表示偏移0个字节,单位是字节,utf-8中一个汉字是两个字节,所以至少要偏移2个字节,偏移一个会报错。一个字母占一个字节
print(file1.readline().strip(),)#readline读取一行,包括后面的换行符,如果不加strip,打印出来会多一个换行符
print(file1.readlines())#readlines按行读取所有,以列表的形式存放。
file1.close()
输出
我住长江头,
君住长江尾,
日日思君不见君,
共饮长江水。
我住长江头,
['君住长江尾,\n', '日日思君不见君,\n', '共饮长江水。']

with open(filpath2,'r+') as f1:#简写方式
    f1.write('d')

open函数有两个参数,第一个是文件(包含路径),第二个是读写模式,第二个参数省略时默认是r模式。
具体模式如下:
r:只读,文件不存在报错
r+ :读写,文件不存在报错,写入是覆盖写入(覆盖写入是从第一个开始覆盖,如果写入的字符少,后面原有字符就不会被覆盖)
rb:只读,以二进制形式读取
w:只写,文件不存在创建文件,写入是清空写入
w+:读写,文件不存在创建文件,写入是清空写入
wb:以二进制形式读写
a:只写,文件不存在创建文件,写入是追加写入
ab:以二进制形式追加写入
a+:读写,文件不存在创建文件,写入是追加写入

如果遇到乱码问题:
1、检查文件的编码
2、检查pycharm的编码:settings—editor——file encodings,选择正确编码

字典:
1、字典是无序的,set 集合也是无序的,list是有序的。

dict1 = {'A':'apple','B':'book'}
dict2 = {'B':'book','A':'apple'}
print(dict1 == dict2)
输出
True

2、字典的键必须是不可变对象,字典的值可以是存放任意对象。

dict1 = {['a']:[1,2,3,4]}
print(dict1)
错误:
TypeError: unhashable type: 'list'

dict1 = {1:[1,2,3,4]}
print(dict1)

dict1 = {(1,):{'A':[1,2,3,(4,5)]}}
print(dict1)
输出:
{(1,): {'A': [1, 2, 3, (4, 5)]}}

3、字典的健是唯一的

dic = {'A':'abc','A':'def'}#最后保存的是def
print(dic)
输出
{'A': 'def'}

4、字典中,新增健和修改键值的语句是一样的,字典会自己判断是新增还是修改,没有的话就新增,有的话就修改。
5、update()方法可以修改或者新增多个键值

dic = {'A':'abc','B':'def'}
print(dic)
print(dic['A'])
dic.update({'A':[1,3,4],'C':123,'D':(1,3,4)})
print(dic)
输出
{'A': 'abc', 'B': 'def'}
abc
{'A': [1, 3, 4], 'B': 'def', 'C': 123, 'D': (1, 3, 4)}

6、删除字典中的键值对

dic = {'A':'abc','B':'def'}
dic.update({'A':[1,3,4],'C':123,'D':(1,3,4)})
del dic['D']
print(dic)
输出
{'A': [1, 3, 4], 'B': 'def', 'C': 123}

7、清空

这种方法id不变
dic = {'A':'abc','B':'def'}
dic.update({'A':[1,3,4],'C':123,'D':(1,3,4)})
print(id(dic))
dic.clear()
print(id(dic))
print(dic)
输出
35027920
35027920
{}

这种方法id会变
dic = {'A':'abc','B':'def'}
dic.update({'A':[1,3,4],'C':123,'D':(1,3,4)})
print(id(dic))
dic = {}
print(id(dic))
print(dic)
输出
33258448
33258520
{}

8、遍历字典中的健、值、键值对

dic = {'A':'abc','B':'def'}
dic.update({'A':[1,3,4],'C':123,'D':(1,3,4)})
print(type(dic.keys()))#类列表,但是不是列表,可以遍历,但是不恩呢该使用下标
for i in dic.keys():
    print(i)
print(dic.keys()[1])#不能下标,报错
输出:
    print(dic.keys()[1])
TypeError: 'dict_keys' object does not support indexing
<class 'dict_keys'>
A
B
C
D

#可以使用list方法,将类列表转化为列表,再使用下标
list3 = list(dic.keys())

#键值对
dic = {'A':'abc','B':'def'}
dic.update({'A':[1,3,4],'C':123,'D':(1,3,4)})
for k,v in dic.items():
    print(k,v)
输出
A [1, 3, 4]
B def
C 123
D (1, 3, 4)

9、json格式,比较像字典,但属于str类型

#json和字典有点差别,json{}里面必须是双引号的,字典可以是双引号也可以是单引号或者三引号。所以,如果是单引号,可以确定是字典,但是双引号不确定是字典还是json格式。下面代码注意看输出,字典默认是用的单引号。
str1 = '''{
    "aac003":"tom",
    "tel":"13018928871",
    "crm003":"1",
    "crm004":"1"}
'''
print(type(str1))
import json
str1_new = json.loads(str1)
print(type(str1_new))
print(str1_new)
str2 = json.dumps(str1_new)
print(type(str2))
print(str2)
输出:
<class 'str'>
<class 'dict'>
{'aac003': 'tom', 'tel': '13018928871', 'crm003': '1', 'crm004': '1'}
<class 'str'>
{"aac003": "tom", "tel": "13018928871", "crm003": "1", "crm004": "1"}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值