第八天
1. 文件操作的初识
- 小屋的联系方式.txt
- 利用python写一个 很low的软件,去操作软件
- 文件路径:path
- 打开方式:读写,追加,读写,写读
- 编码方式:utf-8 unicode 国标gbk,gb2312
f1=open("G:/小屋联系方式.txt",encoding="utf-8",mode="r")
c=f1.read()
print(c)
f1.close()
open 内置函数 ,open底层调用的是系统接口
f1 变量 fh , file_handler ,f_h 文件句柄 对文件的操作 都得经过句柄
encoding: 可以不写, 不写 参数 默认编码本 :操作系统的默认的编码
windows: gbk
linux: utf=8
mac: utf=8
f1.close :关闭文件句柄
打开文件三部曲:
1打开文件
2操作文件
3关闭文件
- 路径错误:
- 解决方法: f1=open( r"G:/小屋联系方式.txt")
2.文件的读
类型
- r 读
- rb:操作的是非文本的文件 图片 视频 音频
- r+ 读写
- r+b 以bytes 进行 读写
read 全部读出来
f=open("文件",encoding="utf-8")
a=f.read()
print(a,type(a))
f.close()
字符串类型
read(n) 按照字符读
f=open("文件",encoding="utf-8")
a=f.read(5)
print(a,type(a))
f.close()
readlines()按行读
a=f.readline() 每次读一行
readlines() 返回一个列表 列表中每个元素是源文件的每一行
L=f.readlines()
['小屋小屋\n', '小屋小屋小屋小屋小屋小屋小屋小屋小屋\n', '小屋小屋小屋小屋小屋小屋小屋\n', '小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋']
for 循环读取
f=open("文件",encoding="utf-8")
for line in f:
print(line)
f.close()
小屋小屋
小屋小屋小屋小屋小屋小屋小屋小屋小屋
小屋小屋小屋小屋小屋小屋小屋
小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋小屋
r+读写 ----读并追加
f=open("文件读写",encoding="utf-8",mode="r+")
f= open("文件读写",encoding="utf-8",mode="r+")
a=f.read()
#刚开始光标在最开始的位置
#读完之后光标移动在最后了
print(a)
f.write("\n人啊人啊人啊")
f.close()
3.文件的写
类型
- w 写
- wb 写非文本文件
- w+ 写读
- w+b 以bytes 进行写读
w 写
f=open("文件的写",encoding="utf-8",mode="w")
f.write("随便写一点小屋")
f.close()
#没有文件 则创建 写入
有文件,先清空原文件,在写入新内容
wb 写非文本
4.追加
- a
- ab
- a+
- a+b
a 追加
没有文件 创建文件 追加内容
有文件直接追加
f=open("文件追加",encoding="utf-8",mode="a")
f.write("随便写一点小屋")
f.close()
f= open("文件读写",encoding="utf-8",mode="r+")
a=f.read()
#刚开始光标在最开始的位置
#读完之后光标移动在最后了
print(a)
f.write("\n人啊人啊人啊")
f.close()
5文件的其他功能
seek() 调整光标的位置 字节
as大赛as
从 大 开始读
f.seek(2)
tell() 获取光标的位置 单位 字节
flush 强制刷新
f.slush()
6打开文件的另一个模式
优点1:不用手动关闭 文件句柄 一段时间自动关闭
with open("文件读写",encoding="utf-8") as f1:
print(f1.read)
优点二:
-
with open("文件读写",encoding="utf-8") as f1,\ open("文件的写",encoding="utf-8"):
-
with open("文件读写",encoding="utf-8") as f1,\
open("文件的写",encoding="utf-8") as f2:
print(f1.read())
f2.write("wiowjoij iojio")
7文件改的 操作
1以读的模式打开原文件
2以写的模式创建一个文件
3将原文件的内容读出来修改写入新内容,写入新文件
4将源文件删除
5,将新文件重命名成原文件
import os
os.remove("文件") #删除文件
os.rename("文件.bak","文件") #重命名文件
#将文件中的SB改为"小屋"
f1=open("文件",encoding="utf-8",mode="r")
old=f1.read()
old=old.replace("SB","小屋")
f1.close()
f1=open("文件",encoding="utf-8",mode="w")
f1.write(old)
f1.close()
#进阶版
import os
with open("文件",encoding="utf8") as f1,open("文件.bak",encoding="utf-8",mode="w") as f2:
for line in f1.read()
newline=line.replace("旧的","新的")
f2.write(newline)
os.remove("文件")
os.remove("文件.bak","文件")
*关于清空的问题
关闭文件句柄 ,再次以w模式打开此文件时,才会清空
with open("文件的写",encoding="utf-8",mode="w") as f1:
f1.wrte("sadhasjkdhasjkdh")
把文件清空 再写
***作业
1. [['-', '-', '-'], ['-', '-', '-'], ['-', '-', '-']]打印这个
#1
L=[]
L1=["-"]
L1=L1*3
print(L1)
L.append(L1)
L=L*3
print(L)
#2
print([["_"]*3]*3)
得到
cars=["沪懂赛奥赛","京dasasd"]
locals={"沪":"上海","京":"北京"}
dic={}
for i in cars:
dic[locals[i[0]]] = dic.get(locals[i[0]],0)+1
print(dic)

浙公网安备 33010602011771号