目录
-
- 文件模式mode
- 文件方法method
- 文件属性property
- 实例演示
- 模式mode
- 只读默认
- 只写原来的内容被清空
- 追加
- 读写文件
- 读写文件
- 文件对象方法和属性
- 二进制读写
- 小知识
文件操作:打开-操作-关闭
模式mode:- 文本
- r只读(默认)
- w只写(创建新文件,存在则删除,不存在则新建)
- a追加(不存在则创建,存在则追加)
- “+”表示可以同时读写某个文件
- r+读写(追加写,常用此项),w+写读(追加写),a+追加读(同a)
- “b”二进制文件(没有encoding参数,网络传输,图片,声音,视频)
- rb只读,rw只写,ra追加,rb+读写,rw+读写,ra+读写
- “U”表示读取时,\r,\n,\r\n自动换成\n
- rU只读
"""春宫曲.txt
春宫曲
唐代:王昌龄
昨夜风开露井桃,未央前殿月轮高。
平阳歌舞新承宠,帘外春寒赐锦袍。
"""
f = open("春宫曲.txt", encoding="utf-8") # 文件句柄
print(f.read()) # 读取全部内容
f.close()
"""
报错:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 4:
illegal multibyte sequence
设置:encoding="utf-8"
"""
只写,原来的内容被清空
f = open("春宫曲.txt", "w", encoding="utf-8") # 指定编码
poetry = """春宫曲
唐代:王昌龄
昨夜风开露井桃,未央前殿月轮高。
平阳歌舞新承宠,帘外春寒赐锦袍。
"""
f.write(poetry) # 写入
f.close()
追加
f = open("春宫曲.txt", "a", encoding="utf-8")
f.write("好诗好诗!") # 在文件末尾追加写入
f.close()
读写文件
f = open("春宫曲.txt", "r+", encoding="utf-8")
# 只适合读取小文件,会转为列表(low loop,不推荐)
for index, line in enumerate(f.readlines()):
if index == 1: # 不打印文件第二行
print("我是分割线".center(30, "*"))
continue
print(line.strip()) # 去除两侧空格和换行
f.write("写入内容,不会报错!")
f.close()
读写文件
f = open("春宫曲.txt", "r+", encoding="utf-8")
# high biger,推荐
count = 0 # 计数器
for line in f: # f是一个迭代器
count += 1
if count == 2: # 如果是第二行
print("--------")
continue
print(line.strip())
f.close()
文件对象方法和属性
f = open("春宫曲.txt", "r+", encoding="utf-8")
print(f.tell()) # 文件指针位置 ->0
print(f.readline()) # ->春宫曲
print(f.tell()) # ->11
f.seek(0) # 将文件指针移到文件首
print(f.tell()) # ->0
print(f.readline()) # ->春宫曲
print(f.fileno()) # 文件的描述符 ->3
print(type(f)) # ->
print(f.name) # 文件名 ->春宫曲.txt
print(f.mode) # 打开模式 ->r+
print(f.closed) # 是否关闭 ->False
print(f.encoding) # 文件编码 ->utf-8
print(f.buffer) # ->
print(type(f.newlines),f.newlines.encode("utf-8")) # 文件换行符
# -> b'\r\n'
print(f.isatty()) # 检测文件是否连接到一个终端设备 ->False
f.truncate(10) # 截断
f.flush() # 将缓存内容刷入硬盘
# f.write("在增加点内容吧")
f.close()
二进制读写
f = open("春宫曲.txt", "rb+") # 二进制读写的时候,不能指定编码
print(f.read()) # ->b'\xe6\x98\xa5\xe5\xae\xab\xe6\x9b\xb2\r'
f.write("我爱北京天安门".encode("utf-8")) # 字符串转为字节再写入
f.close()
小知识
windows命令行下,切换盘符
C:\>d: