0、文件操作的作用:持久化存储。
1、file路径。
相对路径:相对于当前运行的文件目录。
绝对路径:从磁盘根部开始查找的就是绝对路径。
获取当前工作路径用getcwd:import os
print(os.getcwd())
转义:\\ 普通的\
r 转义 r要加在路径的外面。
2、mode = 操作文件的方式: r 只读文本:
(意思是否包含.read()操作、这个是不包含read操作)
a追加写文本:
rb只读字节:用于图片读字节。
wb清空写字节:用于字节转图片。
ab追加写字节:
r+:
(意思是否包含.read()操作、这个是包含read操作)
a+:追加写读(防止报错)
open打开:
f文件句柄:
3、文件的编码。
4、 f.read()全部读取、文件读取时只能读一行。
read(3) 模式的r的情况下按照字符读取。
readline 读取一行。
readlines 读取多行、以列表的形式存储。
5、rb读字节:
f = open("2.png","rb")
print(f.read())
6、w清空写:有文件时清空文件、没文件时创建文件、打开文件时自动清空文件内容、写入内容
7、f.close() 关闭文件
8、f.flush() 刷新
9、\n 回车
10、a 追加写、没文件时创建文件、一直在文件的末尾进行添加。
11、r+ 可读可写:
先读后写: f = open("test","r+",encoding="utf-8")
a = f.read()
print(a)
f.write("这是读写")
先写后读: f = open("test","r+",encoding="utf-8")
f.write("这是读写")
a = f.read()
print(a)
12、w+ 清空写、读:
13、f.seek(0,0) 移动光标、移动到文件的头部。
f.seek(0,1) 移动到光标当前位置
f.seek(0,2) 移动到文件末尾
14、a+ 追加写、读
15、查看光标、返回的是字节用tell:
f.tell()
16、with open 自动关闭文件、可以同时操作多个文件。
17、文件的修改: os.rename 重命名文件名
18、文件中存储的都是字符串。
19、写入内容时只能写入字符串。
作业题:
# 1.有如下文件,a1.txt,里面的内容为:
# 老男孩是最好的学校,
# 全心全意为学生服务,
# 只为学生未来,不为牟利。
# 我说的都是真的。哈哈
# 分别完成以下的功能:
# a,将原文件全部读出来并打印。
f = open("a1.txt","r",encoding="utf-8")
print(f.read())
# b,在原文件后面追加一行内容:信不信由你,反正我信了。
with open("a1.txt","a",encoding="utf-8") as f:
f.write("信不信由你,反正我信了。")
# c,将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。
with open("a1.txt","a",encoding="utf-8") as f:
f.write("信不信由你,反正我信了。\n")
# d,将原文件全部清空,换成下面的内容:
# 每天坚持一点,
# 每天努力一点,
# 每天多思考一点,
# 慢慢你会发现,
# 你的进步越来越大。
with open("a1.txt","w+",encoding="utf-8") as f:
f.write("每天坚持一点,\n"
"每天努力一点,\n"
"每天多思考一点,\n"
"慢慢你会发现,\n"
"你的进步越来越大。")
print(f.read())
# 2.有如下文件,t1.txt,里面的内容为:
# 葫芦娃,葫芦娃,
# 一根藤上七个瓜
# 风吹雨打,都不怕,
# 啦啦啦啦。
# 我可以算命,而且算的特别准:
# 上面的内容你肯定是心里默唱出来的,对不对?哈哈
# 分别完成下面的功能:
# a,以r的模式打开原文件,利用for循环遍历文件句柄。
with open("t1.txt","r",encoding="utf-8") as f:
for i in f:
print(i.strip())
print("----------------------------------------------------------------------------------")
# b,以r的模式打开原文件,以readlines()方法读取出来,并循环遍历 readlines(),并分析a,与b 有什么区别?深入理解文件句柄与 readlines()结果的区别。
f = open("t1.txt","r",encoding="utf-8")
f1 = f.readlines()
for i in f1:
print(i.strip()) #以readlines
# c,以r模式读取‘葫芦娃,’前四个字符。
f1 = open("t1.txt","r",encoding="utf-8")
print(f1.read(4))
print("////////////////////////////////////////////////////////////////////////////////")
# d,以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。
f = open("t1.txt","r",encoding="utf-8")
f1 = f.readline().strip()
print(f1)
print("****************************************************************************")
# e,以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将 原内容全部读取出来。
f = open("t1.txt","a+",encoding="utf-8")
f.write('老男孩教育')
a = f.read()
print(a)
# 3.文件a.txt内容:每一行内容分别为商品名字,价钱,个数。
# apple 10 3
# tesla 100000 1
# mac 3000 2
# lenovo 30000 3
# chicken 10 3
# 通过代码,将其构建成这种数据类型:[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......] 并计算出总价钱。
f = open("a.txt","r",encoding="utf-8")
f1 = f.read()
print(f1)
# 4.有如下文件:
# alex是老男孩python发起人,创建人。
# alex其实是人妖。
# 谁说alex是sb?
# 你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。
print("///////////////////////////////////////////////////////////")
# 将文件中所有的alex都替换成大写的SB(文件的改的操作)。
with open("a2.txt","r",encoding="utf-8") as f,\
open("a3.txt","w+",encoding="utf-8") as f1:
for i in f:
f1.write(i.replace("alex","SB"))
f1.flush()
import os
os.rename("a2","a4")
os.rename("a3","a2")
# 5.文件a1.txt内容(选做题)
# name:apple price:10 amount:3 year:2012
# name:tesla price:100000 amount:1 year:2013
# 通过代码,将其构建成这种数据类型:
# [{'name':'apple','price':10,'amount':3,year:2012},
# {'name':'tesla','price':1000000,'amount':1}......]
# 并计算出总价钱。
lst = []
the_sum = 0
f = open("a1.txt","r",encoding="utf-8")
for i in f:
dic = {}
for em in i.split():
k,v = em.split(":")
dic[k] = v
lst.append(dic)
print(lst)
for i in lst:
the_sum += int(i["price"]) * int(i["amount"])
print(the_sum)
# 6.文件a1.txt内容(选做题)
# 序号 部门 人数 平均年龄 备注
# 1 python 30 26 单身狗
# 2 Linux 26 30 没对象
# 3 运营部 20 24 女生多
# 通过代码,将其构建成这种数据类型:
# [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},
lst = []
f = open("a1.txt","r",encoding="utf-8")
a,b,c,d,e = f.readline().split()
# print(a,b,c,d,e)
for i in f:
num,clas,people,age,remarks = i.split()
dic = {a:num,b:clas,c:people,d:age,e:remarks}
lst.append(dic)
print(lst)
标签:文件,utf,encoding,print,操作,txt,open From: https://blog.51cto.com/u_15920572/5965355