Day 8 文件的操作

open() #打开
file #文件的位置(路径)
mode #操作文件的模式
encoding #文件编码方式
f = open("萝莉小姐姐的电话号",mode='r',encodinz='utf-8')
print(f.read())
f.close()

操作文件
1.打开文件
2.操作文件
3.关闭文件

文件操作的模式
r,w,a(重要)
rb,wb,ab(次要)
r+,w+,a+(没啥用)

r操作:
f = open("萝莉小姐姐电话号",mode="r",encoding="utf-8")
print(f.read()) #全部读取
print(f.read(5)) #按照字符进行读取
print(f.read())

print(f.readline()) # 读取一行内容,自动换行
print(f.readline()) # "常鑫你就是大帅比\n"
print(f.readline().strip()) #去除换行符

print(f.readlines()) # 一行一行的读取,存放在列表中

解决大文件:
for i in f:
print(i) # 本质就是一行一行进行读取

print(f.readline())
print(f.readline())
print(f.readline())

w操作:
w分为两步:
1.先清空文件
2.写入文件

f = open("萝莉小姐姐电话号","w",encoding="utf-8")
f.write("123456789\n")
f.write("123456789\n")
f.write("123456789\n")
f.write("123456789\n")

路径:
1.绝对路径 -- C:\user\meet\python24\萝莉小姐姐电话号
2.相对路径

绝对路径方式打开文件
f = open("F:\s24\day08\萝莉小姐姐电话号","r",encoding="utf-8")
print(f.read())

相对路径方式打开文件
f = open("../day03/萝莉小姐姐电话号","r",encoding="utf-8")
print(f.read())
../ 返回上一层

f = open(r"C:\user\net\s24\day03\萝莉小姐姐电话号","r",encoding="utf-8")

路径转义:
1."\"
2.r"C:\user\net"
推荐使用相对路径 (*****)

s = "[1,'2',3,4]"
print(s)
print(repr(s)) # repr -- 显示数据原生态

a操作: 追加写
在源文件的基础上进行添加
f = open("../day03/萝莉小姐姐电话号","a",encoding="utf-8")
f.write("138383848\n")
f.write("138383850\n")

f = open('萝莉小姐姐的电话号',mode ='ab')
mag = '你好我不好'.encode('utf-8')
f.write(mag)

rb
f1 = open("1.jpg","rb")
print(f1.read()) # 全部读取
print(f1.read(3)) # 按照字节读取

wb
f = open("3.jpg","wb")
f.write(f1.read())

ab
f = open("2.jpg","ab")
f.write("你好啊".encode("utf-8"))

f = open("2.jpg","rb")
print(f.read())

+操作
r+: 读写 - 先读后写

错误的操作 (坑)
f = open("萝莉小姐姐电话号","r+",encoding="utf-8")
f.write("常鑫你太美")
print(f.read())

正确的操作:
f = open("萝莉小姐姐电话号","r+",encoding="utf-8")
print(f.read())
f.write("常鑫你太美")

w+ 清空写,读

f = open("萝莉小姐姐电话号","w+",encoding="utf-8")
f.write("常鑫你太美")
print(f.tell())

f.seek(15)

print(f.tell())
print(f.read())

a+ 追加写,读
f = open("萝莉小姐姐电话号","a+",encoding="utf-8")
f.write("常鑫你太美")
print(f.tell()) # 字节数
print(f.seek(0,0)) # 0将光标移动到文件的头部
print(f.read())

其他操作:
tell 查看光标 --- 返回的是字节数
seek 移动光标
1.seek(0,0) -- 移动到文件的头部
2.seek(0,1) -- 当前位置
3.seek(0,2) -- 移动到文件的末尾
4.seek(3) -- 按照字节进行移动(按照编码集,自己进行计算)

f = open("萝莉小姐姐电话号","r",encoding="gbk")
print(f.read(3)) # 字符

f = open("萝莉小姐姐电话号","rb")
print(f.read(3)) # 字节

f = open("萝莉小姐姐电话号","r",encoding="gbk")
print(f.read(3)) # 字符

错误操作
f = open("萝莉小姐姐电话号","r",encoding="gbk")
f.seek(-1)
print(f.read())

文件修改

f = open("萝莉小姐姐电话号","r",encoding="gbk")
s = f.read()
s1 = s.replace("你太美","吃煎饼")

f1 = open("萝莉小姐姐电话号","w",encoding="gbk")
f1.write(s1)

with 关键字 open("萝莉小姐姐电话号","r",encoding="gbk") as f:
文件操作的具体内容

w,a 检测有文件就操作,没文件就创建

with open("萝莉小姐姐电话号","r",encoding="gbk")as f,
open("萝莉小姐姐电话号.txt","w",encoding="gbk")as f1:
for i in f:
s1 = i.replace("大烧饼","井盖")
f1.write(s1)

import os
os.rename("萝莉小姐姐电话号","萝莉小姐姐电话号.bak")
os.rename("萝莉小姐姐电话号.txt","萝莉小姐姐电话号")

with open("萝莉小姐姐电话号","r",encoding="gbk")as f:
pass # 缩进里操作文件
print(f.read()) # 文件及已经关闭了

posted @ 2019-07-23 16:17  犇羴鱻龘毳  阅读(141)  评论(0编辑  收藏  举报