标签:解决 哈哈 tab键 数据 好的 close mod 如何 style
1 .只读(r)
# 路径有两种:
# 1. 相对路径, 相对于你当前程序所在的文件夹.(必须掌握)
# ../ 返回上一层目录
# 相对的是当前程序所在的文件夹
# 2. 绝对路径. 1.从磁盘根目录寻找. 2.互联网上的一个绝对路路径
f = open("歌姬",mode="r",encoding="utf-8") #f相当于一个句柄
s = f.read()
f.close() #打开以后记得关闭
print(s)
只读(rb)
f = open("歌姬",mode="rb") #读取的内容直接是字节
bs = f.read() #b‘\xe5\xa4\xa7\xe7\x9c\xbc\xe5\x93\xa5,\xe5\xa4\xa9\xe5\xa4\xa9‘
print(bs)
print(bs.decode("utf-8")) #需要解码
f.close()
2. 只写(w):写的时候注意. 如果没有文件. 则会创建文件, 如果文件存在. 则将原件中原来的内容删除, 再 写入新内容.
f = open("宿舍",mode="w",encoding="utf-8") #写入之前会清掉原来的内容
f.write("小白梨")
f.flush()
f.close()
只写(wb)
f = open("歌姬",mode="wb") #读取的内容直接是字节
f.write("你不好吃".encode("utf-8"))
f.close()
3. 追加(a): 在追加模式下. 我们写入的内容会追加在文件的结尾.
f = open("歌姬",mode="a",encoding="utf-8") #在原来的基础上追加内容
f.write("小龙女")
f.flush()
f.close()
4读写(r+): 先将所有的内容清空. 然后写入. 最后读取. 但是读取的内容是空的, 不常用.
f = open("梨",mode="r+",encoding="utf-8") #r+模式,默认情况下光标在文件的开头,必须先读后写
s = f.read()
f.write("周润发")
f.flush()
f.close()
print(s)
在读写模式下,如果没有进行任何操作,直接写入,在开头写入.;只要进行读操作,在末尾处添加写的内容
f = open("梨", mode="r+", encoding="utf-8")
s = f.read(3)
print(s)
# 不管你前面读了几个. 后面去写都是在末尾
f.write("哈哈") # 1.在没有任何操作之前进行写. 在开头写 2. 如果读取了一些内容. 再写, 写入的是最后
5.写读(w+)
f = open("梨",mode="w+",encoding="utf-8") #w操作会清空原来的内容.w+是不用的
f.write("今天天气")
f.seek(0)
s = f.read()
print(s)
f.flush()
f.close()
6. 追加读(a+):a+模式下,不论是先读还是后读,都是读不到数据的.
f = open("梨",mode="a+",encoding="utf-8")
f.write("黄鹂")
s = f.read()
print(s)
f.flush()
f.close()
7 .光标移动
f = open("精品", mode="r+", encoding="utf-8")
f.read(3)
f.seek(3) # 移动到xx位置
移动到开头: f.seek(0) 开头
移动到末尾: f.seek(0, 2) 末尾 第二个参数有三个值. 0: 再开头, 1: 在当前, 2: 末尾
f.seek() seek里的参数移动的是字节
f.seek(6) # 移动6个字节. 2个字 s = f.read(3) # 读取3个字 print(s) f.seek(0) ss = f.read(3) print(ss)
8 .文件内容修改
文件修改: 只能将文件中的内容读取到内存中, 将信息修改完毕, 然后将源文件删除, 将新文件的名字改成老文件的名字.
import os
with open("../er,",mode="r",encoding="utf-8")as f1,open("../er_副本",mode="w",encoding="utf-8")as f2:
s = f1.read()
ss = s.replace("肉", "菜")
f2.write(ss)
os.remove("er")
os.rename("er_副本","er")
弊端: ?次将所有内容进行读取. 内存溢出 解决方案:?行一行的读取和操作
import os
with open("../er,",mode="r",encoding="utf-8")as f1,open("../er_副本",mode="w",encoding="utf-8")as f2:
for line in f1:
s = line.replace("肉","菜")
f2.write(s)
os.remove("er")
os.rename("er_副本","er")
9 .truncate()截断
#火锅鸭血粉丝汤
f = open("梨小",mode="r+",encoding="utf-8")
f.seek(12)
# f.truncate() #truncate()不给参数,从文件头截取到当前位置 火锅鸭血
f.truncate(15) #truncate()给了参数,从文件头截取到你给这个参数的位置
f.flush()
f.close()
10. 判断文件是否可读
f = open("亵渎", mode="r", encoding="UTF-8")
# 如何判断这个文件可以进行什么操作
# print(f.readable()) # 判断文件是否可读
# print(f.writable()) # 是否可写入
11. readlines:
readlines()将一行形成一个元素, 放到一个列表中. 将所有的内容都读取出来. 所以也是容易出现内存崩溃的问题.不推荐使用.
f = open("梨",mode="r",encoding="utf-8")
lst = f.readlines() #拿到列表
for s in lst:
ss = s.strip() #去掉空格,还可以去掉换行符,制表符
print(ss)
f.flush()
f.close()
12. 循环读取.这种方式是最好的,每次读取一行内容,不会产生内存溢出的问题.
f = open("梨",mode="r",encoding="utf-8")
for line in f:
print(line.strip())
f.close()
13. strip():可以去掉空格,还可以去掉换行符,制表符
s = "\t哈哈哈" print(s.strip()) #\t就是tab键
标签:解决 哈哈 tab键 数据 好的 close mod 如何 style
原文地址:https://www.cnblogs.com/gyh412724/p/9295984.html