mode:
r: 读取,只读.
读取文件的相关操作
1. read()
默认: 读取文件内容(全部)
read(n) 读取n个字符
2. readline() 读取一行
3. readlines() 读取全部. 返回列表
(最重要)4. for line in f: 每次读取一行内容
w:
写入. 只写
创建文件
会清空文件
a:
也可以创建文件
追加写
r+: 对于文件而言. 应该有的操作就两个:读, 写
读写操作
w+:
写读操作
a+:
追加写读
所有带b的表示直接操作的是bytes, 当处理非文本文件的时候.
rb
wb
ab: 断点续传
r+b
w+b
a+b
r
f = open("小护士模特主妇萝莉.txt", mode="r", encoding="utf-8") # print(f.read(5)) # 读取5个字符 # print(f.read(5)) # 继续读5个 # # print(f.readline().strip()) # 换行符为分割, strip()可以去掉换行. 读取到的内容第一件事就是去掉空白 # print(f.readline()) # 换行符为分割 # # f.close() # # print("周润发", end="胡辣汤") # print("周星驰") # print(f.readlines()) # 一次性把文件中的内容读取到列表中. # print("你叫什么名字? 我叫李嘉诚. 可能") # 换行 # print("你叫什么名字?\n 我叫李嘉诚. 可能") # 显示 # print("你叫什么名字?\\n 我叫李嘉诚. 可能") # 显示 \n # 文件句柄是一个可迭代对象 # 优点: 相对来说节省内存, 操作相对简单 for line in f: # 从文件中读取到每一行给前面的line print(line.strip()) f.close()
w
# 每次用w模式打开文件, 都会清空这个文件(坑) f = open('胡辣汤', mode="w", encoding="utf-8") # 可以帮我们创建文件 # f.write('河南特色 ') # f.write("东北特色 ") # f.write('陕西特色 ') # 好习惯 f.flush() # 刷新管道, 把数据写入文件 f.close()
a
f = open("葫芦小金刚", mode="a", encoding="utf-8") # a, append 追加, 在文件的末尾写入内容 # f.write("你叫什么名字啊?") # f.read() # not readable f.flush() f.close()
+
# f = open("葫芦小金刚", mode="r+", encoding="utf-8") # content = f.read(2) # 顺序必须先读, 后写 # # r+特有的深坑:不论读取内容的多少. 只要你读了. 写就是在末尾 # f.write('五娃') # print(content) # 一上来会清空文件. 没人用 # f = open("葫芦小金刚", mode="w+", encoding="utf-8") # # content = f.read(2) # 顺序必须先读, 后写 # # # r+特有的深坑:不论读取内容的多少. 只要你读了. 写就是在末尾 # # f.write('五娃') # f.write("又能吐火的, 有能吐水的.") # # 移动光标 # f.seek(0) # 移动到开头 # s = f.read() # print("=========>", s) # 追加写读, 光标在末尾. 所有的写都是在末尾 # f = open("葫芦小金刚", mode="a+", encoding="utf-8") # f.write("机器葫芦娃召唤神龙, 高喊.我代表月亮消灭你!") # f.seek(0) # s = f.read() # print("=========>", s)
文件复制
f1 = open("c:/huyifei.jpg", mode="rb") f2 = open("d:/huerfei.jpg", mode="wb") for line in f1: # line是从f1中读取的内容 f2.write(line) # 把读取的内容原封不动的写出去 f1.close() f2.flush() f2.close()