现在我一般都是直接用with open比较保险:

with open("test.txt","r","utf-8") as f:

# 为a+模式时,因为为追加模式,指针已经移到文尾,读出来的是一个空字符串。ftext

= f.read()# 一次性读全部成一个字符串ftextlist = f.readlines()# 也是一次性读全部,但每一行作为一个子句存入一个列表

 

w新建只写,w+新建读写,二者都会将文件内容清零

r读打开,r+读写打开

 

**w+,r+与a+区别:

r+:可读可写,若文件不存在,报错, 进行了覆盖写;

w+: 可读可写,若文件不存在,创建,进行了清空写;

a+:可读可写但光标在最后面(然后读到最后面,所以读到空字符串),若文件不存在,创建,进行了追加写;

 

下图为r+模式下的覆盖写


 

 

不可读的打开方式w和a

若不存在会创建新文件的打开方式:a,a+,w,w+

 

 

a 模式不能用来读,即使用f.read()等会报错。

 

然后记一下下面几种方法:

F.read([size]) #size为读取的长度,以byte为单位 
F.readline([size]) 
#读一行,如果定义了size,有可能返回的只是一行的一部分 
F.readlines([size]) 
#把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。


F.write(str)   # 写入一句,要换行的话可以加上"\n"
#把str写到文件中,write()并不会在str后加上一个换行符 
F.writelines(seq)   # 写入多行
#把seq的内容全部写到文件中。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

 

 另:调用seek方法可以把指针指向想要的位置:如 f.seek(0)  #指向开头

posted on 2018-08-10 14:39  兮吾  阅读(6455)  评论(0编辑  收藏  举报