- # 文件处理
- # 文件打开模式
r 只读
w 只写
a 只追加
x 只读, 没文件会报错
- #open 中的 mode 参数
- 'r' 'w' 'a' 'x'
- # 以下注意!!!
- 'w+' == w + r #假定 open 的文件存在的情况下: 以 w 的形式 open 并加上 r 功能 (打开一个空文件, 执行操作后覆盖回原文件)
f = open('text1','w+',encoding='utf-8') --> f 称为文件句柄
data = f.readlines() --> data 的值为空 , 因为 w+ 是开一个空文件, 无论之前该文件里有何内容都无关
print(data)
f.write('\n11\n22\n33\n44\n') --> 写入文本
data1 = f.readlines()
print(data1) --> data1 的值仍然为空, 因为读取是从写入的文本的最后开始读取
- f.close()
- 'a+' == a + r #假定 open 的文件存在的情况下: 以 a 的形式 open 并加上 r 功能(打开原文件, 从文件的末尾开始执行操作)
- f = open('text1','a+',encoding='utf-8')
data = f.readlines() --> data 的值为空 , 因为 a+ 是打开原文件, 但是从末尾开始执行操作, 此时末尾无字符, 读取的为空
print(data)
f.write('\n11\n22\n33\n44\n') --> 追加文本
data1 = f.readlines()
print(data1) --> data1 的值仍然为空, 因为读取是从追加的文本的最后开始读取(为空)
- f.close()
- 'r+' == r + w #假定 open 的文件存在的情况下: 以 r 的形式 open 并加上 w 功能(打开原文件, 从文件的开头开始执行操作)
- f = open('text1','r+',encoding='utf-8')
data = f.readlines() --> data 的值为原文件里的文本 , 因为 a+ 是打开原文件, 从开头开始执行操作
print(data)
f.write('\n11\n22\n33\n44\n') --> 读取完文件后, 光标到达文件末尾, 从末尾写入文本
data1 = f.readlines()
print(data1) --> data1 的值仍然为空, 因为是从写入文本的最后开始读取(为空)
- f.close()
- 'x+' == x + r
- # 在底层以二进制处理文件(Linux 下没卵用, 因为 Linux 底层就是以二进制处理)
- rb wb ab rb+ wb+ ab+
- # 文件处理读操作
- #open 函数(open 的值称为文件句柄)
- f = open('C:\\Users\\ssy\\Desktop\\1.txt', 'r' ,encoding='utf-8')
- # 注意路径分隔符为 \\ , 不指定路径只输入文件名 (1.txt) 则需要文件与 py 代码文件的路径一致
- #open 函数如果不指定编码方式, 默认使用当前系统的编码读取文本
- #Windows 默认系统编码方式为 gbk ,Mac 为 utf8 . 故在 Windows 下得指定编码方式
- #Windows 下打开记事本另存为时可以查看编码方式
- # 第二个参数'w' 代表 只写模式(不可读), 不输入默认为 r 只读模式
- text = f.read()
- print(text)
- f.close()
- #read 函数
- f = open('C:\\Users\\ssy\\Desktop\\1.txt',encoding='utf-8')
a = f.readable() -->判断是否可读
b = f.readline() -->一次读取一行, 第一行开始(下一行有文本的情况下, 读取完默认换行(实际上顺序读取每一行的每个字符, 包括隐藏的 \ n))
c = f.readline()
d = f.readlines() -->从当前光标位置开始(如上面调用了 readline 函数, 从调用后的光标位置开始), 读取所有行, 存入列表中
- print(a)
- print(b , end='')
- print(d)
- f.close()
- # 文件处理写操作
- #write 函数
- f = open('C:\\Users\\ssy\\Desktop\\1.txt','w',encoding='utf-8')
- # w (只写) 模式下, 直接开一个新文件覆盖原文件(相当于清空了原文件), 再开始下一步操作.
- # 若没有此文件, 则会创建
- f.write('111111 the first line\n')
- f.write('end 0,0\n Aha ! you were tricked !\n')
- f.writable() #判断是否 只写 模式
- f.writelines(['aaa\n','123','bbb',['abc']]) #注意文件里都为字符串类型, 故也只能写入字符串
- f.close()
- # 文件处理追加操作
- f = open('C:\\Users\\ssy\\Desktop\\1.txt','a',encoding='utf-8')
- f.write('write in the end \n')
- f.close()
- # 文件处理 with 语句(打开文件执行完操作后自动关闭文件)
- with open('text1','w',encoding='utf-8') as f :
- f.write('hello world~\n')
- # 同时打开多个文件进行操作
- with open('text1','w',encoding='utf-8') as f , open('text2','w',encoding='utf-8') as f1 : #此操作 open 文件有先后顺序(左到右)
- f.write('hello world~\n')
- f1.write('I hate the world !!!\n')
来源: http://www.bubuko.com/infodetail-2894111.html