Python基础 ( 五 )

#文件处理

#文件打开模式

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')

 

猜你喜欢

转载自www.cnblogs.com/Matrixssy/p/10163047.html
今日推荐