标签:解决 哈哈 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