python读写文件操作之txt文本操作

python可以对很多种类的文件进行操作,这里只写一下对txt文本文件的操作

一、打开文本的操作方法有两种

1、f = open(filename,mode='r',encoding=None),获得对文件操作的对象

 常用的参数就是上面写的三个,filename 文件名,mode 打开方式,encoding 编码方式

其余的参数还有buffering(缓冲)设置缓冲策略,newline可以取的值有None, \n, \r, ”, ‘\r\n',用于区分换行符,但是这个参数只对文本模式有效

可以参考代码理解newline参数:

with open('bb.txt','w+',newline='\r',encoding='utf-8') as f:
    f.writelines(['python\n','Javascript\n','java\n'])#写入三行数据,换行符是'\n'
    f.flush() #清空缓存,将缓存中的数据立刻写入到磁盘文件中
    f.seek(0)  #此时写入完成之后,文件的指针是在结尾的位置,所以要将文件指针移动到文件的开始位置,用于读取文件内容
    print(f.readlines())

运行的结果如下:

          ['assd\r', 'cdfree\r', '789456\r']

如果设置了newline参数,则读取的内容的换行符会按照newline的值\r读取。

mode打开方式有如下几种

'r'       以只读的方式打开(默认)
'w'       以只写的方式打开文本,如果文本之中存在内容则首先会清空之前的内容(如果文件不存在则创建改文件并以只写的方式打开)
'x'       创建一个新文件,并以写的方式打开,如果文件存在则会产生FileExistsError:  File exists错误
'a'       以只写的方式打开文件,如果有原文件则会在以追加到文件的末尾的方式写入
'b'       以二进制模式打开文件
't'       文本文件模式打开(默认)
'+'       以可读可写的方式打开文件

如果以这种方式打开文件,对文件操作完成之后要有相对应的f.close()。

2.with open(filename,mode='r',encoding=None) as f :

     还可以使用with语句获得文件操作的对象,此种方式不需要在单独写f.close()

二、文件的操作

常用的有:

f.read([size)  从一个文件流中读取size个字符/字节,size未指定则返回整个文件,适合文件较小的文本,文本较大则会报错。f.read()读到文件尾时返回""(空字串).
f.readline()   读取一行数据,如果到达文件末尾返回空行
f.readlines([size])   返回包含size个字符/字节的列表,如果没有指定size则返回每一行字符串所组成的列表
f.write()            写一个字符串/字节串到文件流中,返回的是写入的字符/字节数
f.writelines()     将每行字符串/字节串组成的列表写入到文件流中,返回None
f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).
f.seek(偏移量,[起始位置])  用来移动文件指针
                          偏移量:单位:比特,可正可负
                          起始位置:0-文件头,默认值;1-当前位置;2-文件尾 
f.flush()  将写入文件的缓存写入到磁盘
f.close()  关闭文件

下面可以用代码加深理解

with open('test.txt','w+',encoding='utf-8') as f:
    f.writelines(['python\n','Javascript\n','Mysql\n','C语言基础\n','C++\n']) #使用writeline写入三行数据
    num = f.write('数据结构与算法\n') # 使用write 写入数据,返回的是写入的字符串的个数
    print('write写入的字符数是:  %d'%num)
    print('文件指针的位置:  %d'%f.tell()) #j打印出文件指针的位置
    f.flush() # 将缓存中的内容写入到磁盘文件中
    f.seek(0) #将文件指针移动到文件开始位置
    print('移动指针后文件指针的位置:  %d'%f.tell()) #查看文件指针位置
    print('readlines按照6个字符串读取内容:  %s'%f.readlines(6)) #readlines读取6个字符
    print('readline读取一行内容:  %s'%f.readline())  #readline 读取一行
    print('read按照指定字符读取内容:  %s'%f.read(10)) #read 读取10个字符
    print('read不带参数读取内容:  %s'%f.read())  #read 读取全部内容

运行的结果如下:

      需要注意的是,每次读取之后文件的指针并没有重置为0(开始的位置),所以下次读取的内容是按照指针的位置接着读取的。

write写入的字符数是:  8
文件指针的位置:  70
移动指针后文件指针的位置:  0
readlines按照6个字符串读取内容:  ['python\n']
readline读取一行内容:  Javascript

read按照指定字符读取内容:  Mysql
C语言基
read不带参数读取内容:  础
C++
数据结构与算法

以上就是python 操作文本文件的基本操作方法,大家相互学习,需要的朋友可以参考下,有问题可以留言。

你可能感兴趣的:(python操作文本,python,字符串)