python教程16课:python文件读写操作

读文件

文件读写的三种格式:

1、w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写【w+ 是读写内容,只要沾上w,肯定会清空原来的文件】

2、r 读模式,只能读,不能写,而且文件必须存在【 r+ 是读写模式,只要沾上r,文件必须存在】

3、a 追加模式,也能写,在文件的末尾添加内容

4、rb+、wb+、ab+,这种是二进制模式打开或者读取,一些音乐文件

用open( arg ,arg1)直接打开文件, arg表示文件的路径,arg1表示读写文件的方式

f = open('test.txt', 'r')

arg路径可能存在转义的问题,可以使用\\ 或者 / 或者 r 的三种方式来规避文件可以多次打开,打开一个文件后,第二次打开是一个新的窗口文件打开之后,一定要关闭掉f = open('H:\\2018python\\20180813\\test.txt', 'r')

f1 = open('H:/2018python/20180813/test1.txt', 'r')

r 表示read,只读,不能写,并且要保证文件存在,否则会报错w表示write,只写,不能读,如果文件里面已经有了内容,会覆盖掉a表示append,追加模式,在文件里面写,但是不会删除原来的内容,而是直接增加到末尾rb 以二进制binary 来进行读wb以二进制来进行写ab以二进制来进行追加r+ 表示读写模式,可读可写,只要碰到r, 文件都必须存在w+ 表示读写,只要碰到w,文件原来的内容会清空a+ 表示读写、可读可追加内容,不会清空原来的数据读文件:

f = open('H:\\2018python\\20180813\\test1.txt', 'r')# 可以直接用 list 转换 f, f本身就是一个可遍历的对象# print(list(f))'''如果使用 read() 读取文件数据,会直接一次读取所有内容。如果文件大于系统可用内存,会出现不可预知的问题,所以使用read(size)读可以使用参数size 来确保内容不会超出范围'''print(f.read(3))'''readline() 表示一行一行的读取文件,如果读到末尾结束后,就无法读取数据 通常和 while True搭配使用'''# while True:# str = f.readline()# if str:# print('我是有值的',str)# elif not str:# print('==============')# break'''readlines() 一次读取所有行,放到一个 list集合里面通常搭配 for x in f 使用'''# # print(f.readlines())# lines = f.readlines()# for ln in lines:# print(ln)f.close()

with open语句

Python里面可以使用with语句来自动帮我们调用close()方法:

'''read()、readline()、readlines() 三种方法都需要手动写出 close来进行关闭可以使用 with open(filepath, arg) as filename: 来代替,arg表示 r / w / a'''with open('H:\\2018python\\20180813\\test1.txt', 'r') as f:#里面的读写操作和直接用open打开的使用方式一样 print(f.readlines())

python文件对象提供了三个“读”方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量。

read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。readline() 每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。写文件:

'''写文件'''f = open('H:\\2018python\\20180813\\test1.txt', 'w')'''1、如果使用write写入文件以后,没有关闭的话,内容在缓存里面,并没有写到文件,只有关闭的时候,才会写进去2、write方法和read()、readline()对应,将字符串写入文件'''# f.write('111\n222\n333\n444\n555\n')'''1、writelines()和readlines() 对应,针对列表进行操作,列表可以是一个list集合,也可以是一个字符串2、往文件里面写内容的时候,一行一行表示写的过程一行,而结果不是,结果换行需要显示用 \n 表示3、因为文件只打开一次,所以可以一直往里面写内容,不会覆盖'''f.writelines( 'abcdefg\n' )f.writelines(['aaa\n','bbb','ccc\n','ddd'])# 将内存缓冲区里面的内容,刷到文件里面去,也就是保存写入的内容到文件f.flush()# closed 是验证文件是否关闭的属性值,如果True表示已关闭,如果为False表示未关闭f.close()

追加写文件:

'''追加写文件, 打开文件方式使用 a'''f = open('H:\\2018python\\20180813\\test1.txt', 'a')f.writelines(['eee','fff','ggg'])f.close()

r+/w+/a+的使用

'''r+/w+/a+ 的不同使用方式r+ 表示读写模式,可读可写,只要碰到r, 文件都必须存在w+ 表示读写,只要碰到w,文件原来的内容会清空r+写文件的时候,原文件内容不清除w+写文件的时候,会删除原内容,如果增加之后想读取,需要先flush保存数据到文件'''print('==========r+===========')f1 = open('H:\\2018python\\20180813\\test3.txt', 'r+')print(f1.read())f1.writelines(['eee\n','fff\n','gggg'])f1.close()print('==========w+===========')ff = open('H:\\2018python\\20180813\\test4.txt', 'w+')ff.writelines(['eee\n','fff\n','ggg'])# 将指针从新指向到第一个位置,类似将光标从新放到第一位ff.seek(0)# 文件想要读取出来,再写入之后,需要先flush()ff.flush()print(ff.read())ff.close()print('==========a+===========')f2 = open('H:\\2018python\\20180813\\test5.txt', 'a+')f2.writelines(['eee\n','fff\n','ggg'])# 将指针从新指向到第一个位置,类似将光标从新放到第一位f2.seek(0)# 文件想要读取出来,再写入之后,需要先flush()f2.flush()print(f2.read())f2.close()

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181107A0UN3O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券