文件操作
15.1.1 文件路径
文件路径:存放的具体地方(目录层级)
绝对路径:
D:\wenjianwenjian2\moumou.txt #一般这种就是绝对路径 #就是说任何一个人顺藤摸瓜就能摸到它 相对路径:
./当前路径 ../返回上一层
根据自己的位置去找另外的文件
15.1.2 字符编码
-
把字符转化成计算机能懂得代码
-
unicode:包含了世界上所有的字符。 其他的字符编码都是从它身上剥离出来的 utf-8:互联网强烈要求统一的字符编码 ASCII:用于欧洲字体 GBK:用于简体字 GB2312:用于繁体字
15.2.1 文件操作
把大象放进冰箱分几步:
-
打开冰箱(为了方便后面的操作)
-
装大象(主要目的)
-
关闭冰箱(节省能源)
文件操作分几步:
-
打开文件(为了方便后面的操作)
-
操作文件(主要目的)
-
关闭文件(避免占用资源)
变量名=open('文件路径',操作模式,字符编码) 变量名.操作模式() 变量名.close()
W写入模式 f = open('tunk.txt','w',encoding='utf-8') f.write('大家好我是嘿嘿,这是我写入的第一个文件') f.close() # 如果只写文件名默认在当前统计目录下写入文件,文件不存在就直接创建。 #write是写入的意思 f = open(r'D:\python139\demo1\tunk.txt','w',encoding='utf-8') f.write('hello world') f.close() # 防止路径中出现转义字符,使用r取消转义效果。 f = open(r'./demo1/demo.py','w',encoding='utf-8') f.write('hello world') f.close() f = open('../model/all.txt','w',encoding='utf-8') f.write('hello world') f.close() # w 模式 以写的方式打开文件,文件不存在就创建文件,文件存在就清空重写。
a追加模式 f = open(r'./demo1/demo.txt','a',encoding='utf-8') f.write('1111111') f.close() #a 以追加的方式打开文件,文件不存在就创建,文件存在就继续追加内容。
r读取方式 f = open(r'./demo1/demo.txt','r',encoding='utf-8') a = f.read() print(a) f.close() # r 以读取的方式打开,文件必须存在,使用read方法读取内容 进行输出
w - 以写的方式打开文件,文件不存在就创建文件,文件存在就清空重写 a - 以追加的方式打开文件,文件不存在就创建,文件存在就继续追加内容。 r - 以读取的方式打开,文件必须存在,文件不存在会报错w - 以写的方式打开文件,文件不存在就创建文件,文件存在就清空重写
打开模式 | 效果 |
---|---|
r | 以读方式打开,文件必须存在 |
w | 以写方式打开,文件不存在则创建,存在清空原有内容 |
a | 以追加模式打开,文件不存在则创建,存在则继续进行写操作 |
r+ | 以读写模式打开 文件必须存在 |
w+ | 以读写模式打开文件,不存在则创建,存在清空原有内容 |
a+ | 追加并可读模式,文件不存在则创建,存在则继续进行写操作 |
rb | 以二进制读模式打开 同r |
wb | 以二进制写模式打开 同w |
ab | 以二进制追加模式打开 同a |
rb+ | 以二进制读写模式打开 同r+ |
wb+ | 以二进制读写模式打开 同w+ |
ab+ | 以二进制读写模式打开 同a+ |
15.2.2 文件操作便捷方式
with语句,来访问文件,在语句结束的时候会自动关闭文件。
with open(文件名/文件路径,打开模式,字符编码) as 变量名: 变量.操作方法 with open('tunk.txt','w',encoding='utf-8') as f: f.write('好好好\n') f.write('但是革命尚未成功,同志仍需继续学习\n') f.write('项目考察综合能力') #文件不存在会创建文件,但是目录不存在时不会创建的 with open('tunk.txt','r',encoding='utf-8') as f: print(f.read()) #把所有的内容都读取。 print(f.read(5)) # 通过设置参数 设置读取的字符长度 print(f.readline()) # 默认读取第一行 print(f.readline(3)) #通过设置参数设置读取字符的长度 print(f.readlines()) #读取每一行的内容,每一行当成一个元素存放在列表中 with open('tunk.txt','a',encoding='utf-8') as f: f.write('好好好')
15.3.1 json方法
dumps: 把python文件的数据 转存为 json---序列化过程 loads:json数据还原成python数据 反序列化 import json singer = ['王菲','张杰','周杰伦','薛之谦','刘德华'] print(singer) print(type(singer)) dd = json.dumps(singer) print(dd) print(type(dd)) # json数据在python展现-以str的类型展现的 jj = json.loads(dd) print(jj) print(type(jj)) -------------------------------------------- # dd = json.dumps(singer) # f = open('data.json','w',encoding='utf-8') # f.write(dd) # f.close() # rf = open('data.json','r',encoding='utf-8') # data = rf.read() # print(data) # jj = json.loads(data) # print(jj) # rf.close() with open('data1.json','w',encoding='utf-8') as f: json.dump(singer,f) with open('data1.json','r',encoding='utf-8') as rf: res = json.load(rf) print(res)