- 文件操作
- open 打开文件
# open(文件名, 模式, 编码) f = open('haha.log ', "r") # 默认是只读模式 r data = f.read() f.close() print(data) # 基本的打开方式(可加编码方式) # 1. 只读:r (不写时默认) f = open('haha.log ', "r") # 2. 只写:w 文件存在时,把文件清空重写,不存在时创建,不可读 f = open('haha.log ', "w") f.write("123") f.close() # 3. 只写:x 文件存在报错,不存在创建,不可读(python3) # 4. 追加:a 文件存在追加内容,不存在创建,不可读 f = open("haha.log", "a") f.write("666") f.close() # 字节的方式打开(不用加编码方式) # 1. 只读:rb f = open("haha.log", "rb") data = f.read() f.close() print(data) # 2. 只写:wb f = open("haha.log", "wb") f.write(bytes("中文", encoding="utf-8")) f.close() # 常用 r/w/x/a =====> str # rb/wb/xb/ab ======> bytes # r+:读写 f = open("haha.log", "r+", encoding="utf-8") data = f.read() # 不加参数,默认从指针0读到末尾 print(type(data), data) # <class 'str'> 中文 f.write("中国人") # 在末尾追加,指针到最后了 data = f.read() # 继续读,后面就为空了 f.close() # w+:写读,先清空,读在写之后就可以读了 # 先清空,之后写的才能读,写--->指针到最后 f = open("haha.log", "w+", encoding="utf-8") f.write("张三") f.seek(0) # 写过后指针到最后了,seek()调整指针 data = f.read() f.close() print(data) # a+:打开的同时,将指针一到最后 # 写时,追加,放在最后 f = open("haha.log", "a+", encoding="utf-8") data = f.read() f.seek(0) print(data)
- 总结
-
f.tell()
:获取指针的位置 -
f.seek()
:调整指针的位置 -
f.write("xxxx")
: 写 -
f.read("xxxx")
: 读 - 共有的特性:seek,读取
-
flush()
:刷新缓冲区数据到硬盘 -
readline()
:仅读取一行 -
truncate()
:截取前面的内容(依赖于指针)# 一行一行的读,不费内存 f = open("haha.log", "r", encoding="utf-8") for line in f: print(line) # 用with不用close了 with open("haha.log", "r") as f: f.read()
- python2.7后with支持同时打开多个文件
# 节约内存的方式把obj1文件写入obj2文件 with open('log1', 'r') as obj1, open('log2', 'w') as obj2: for line in obj1: obj2.write(line)
- 补充
- r+,读写:读--->从0开始读取 写---->如果先读;就在最后追加,主动seek,写从当前指针向后写
- a+,追加:读--->最后位置读取 写-----> 最后追加,主动seek,还是最后追加
网友评论