python3 文件
一.创建和打开文件open(filename, mode)
1.python中windows在路径名中既可以接受斜线(/),也可以接受双反斜线(\\),也可以双斜线(//),就是不能单反斜线(\)
2.filename 变量是一个包含了你要访问的文件名称的字符串值
3.mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)
1 f=open('wenj.txt','w') #打开文件 2 f.write('python') #操作文件 3 f.close() #关闭文件 4 ---------------------------------------------- 5 #在当前目录创建了wenj.txt文件 6 #在创建的wenj。txt中 7 python
4.文本文件:txt、doc、xls... 二进制文件:图片、视频、音乐
5.默认是读取utf-8编码的文本文件
二.文件对象的方法
1.file.name#读取文件名称
2.file.read(size)用于从文件读取指定的字节数,如果未给定或为负则读取所有
1 #file.read(size)用于从文件读取指定的字节数,如果未给定或为负则读取所有 2 fread=open('wenj.txt','r+') 3 # size 是一个可选的数字类型的参数 4 print(fread.read(8))#读取一定数目的数据, 然后作为字符串或字节对象返回 5 print(fread.read())#当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回 6 #第二次读取时,不会读取已经读取过的内容 7 fread.close() 8 ------------------------------------------------------------------ 9 python 10 s 11 daaaaaaaaaaaaaaa 12 faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3.f.readline(size)从文件读取整行,包括 "\n" 字符
1 #readline() 方法用于从文件读取整行,包括 "\n" 字符。 2 freadline=open('wenj.txt','r') 3 print(freadline.readline())#读取文件可以被读取的文件的第一行 4 print(freadline.readline())#读取文件可以被读取的文件的第一行 5 print(freadline.readline(4))#读取文件可以被读取的文件的第一行,可以指定读取的长度 6 print(freadline.readline())#读取文件可以被读取的文件的第一行 7 freadline.close() 8 ------------------------------------------------------------------------- 9 python\n 10 11 sdaaaaaaaaaaaaaaa 12 13 faaa 14 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4.f.readlines(size)读取所有行(直到结束符 EOF)并返回列表,(自动地将文件按换行符进行处理,将处理好的每一行组成一个列表返回)
1 # readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表 2 f=open('wenj.txt','r+') 3 print(f.readlines()) 4 print(f.readlines())#返回空列表 5 f.close() 6 7 # 如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割 8 f=open('wenj.txt','r+') 9 print(f.readlines(10)) 10 print(f.readlines(3)) 11 f.close() 12 13 14 f=open('wenj.txt','r+') 15 for line in f.readlines():#依次读取每行 16 line=line.strip() #去掉每行头尾空白 17 print(line) 18 f.close() 19 ------------------------------------------------------------------------------ 20 ['python\\n\n', 'sdaaaaaaaaaaaaaaa\n', 'faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n'] 21 [] 22 ['python\\n\n', 'sdaaaaaaaaaaaaaaa\n'] 23 ['faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n'] 24 python\n 25 sdaaaaaaaaaaaaaaa 26 faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5.f.write(str) 将 str写入到文件中, 然后返回写入的字符数
1 # write() 方法用于向文件中写入指定字符串 2 f=open('wenj.txt','w') 3 # 如果要写入一些不是字符串的东西, 那么将需要先进行转换str() 4 print(f.write(r'python\n'))#写入内容覆盖原内容,wenj.txt中python\n 5 #返回的是写入的字符串中字符的个数8 6 f.close() 7 ------------------------------------------------------------------- 8 8
6.f.tell() 方法返回文件的当前位置,即文件指针当前位置
1 #wenj.txt: python sds 2 # f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数 3 f=open('wenj.txt','r+') 4 print(f.tell()) 5 print(f.read(3)) 6 print(f.tell()) 7 f.close() 8 ------------------------------------------------------------------------- 9 0 10 pyt 11 3
7.f.seek(offset, from_wha)移动文件读取指针到指定位置,文本文件的操作模式下(不带b)只能写0;如果想要写1或2,必须在二进制文件操作模式下(带b)
1 #python sds 2 3 #f.seek(offset, from_what)改变文件当前的位置 4 #offset开始的偏移量,也就是代表需要移动偏移的字节数 5 #from_what可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移; 6 # 0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起 7 f=open('wenj.txt','rb+') 8 print(f.seek(5))#移动到文件的第五个字节,无返回值 9 print(f.read(3))#读取三个字节 10 print(f.seek(1))#移动到文件的第1个字节 11 print(f.read(1))#读取一个字节 12 print(f.seek(-1,2)) 13 # 在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常 14 print(f.read(1)) 15 ------------------------------------------------------------------------- 16 5 17 b'n s' 18 1 19 b'y' 20 9 21 b's'
8.f.close()关闭文件并释放系统的资源,清空缓冲区的数据内容到磁盘文件;f.flish()立即清空缓冲区的数据内容到磁盘文件
9.with关键字
1 # 当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。 2 # 而且写起来也比 try - finally 语句块要简短: 3 # 相当于f=open('wenj.txt','rb+') 4 with open('wenj.txt','rb+') as f: 5 print(f.read()) 6 -------------------------------------------------------------- 7 b'python sds'
10.for in可以用来遍历f本身,也可以遍历行列表
11.容错处理:readable和writable方法
1 f=open('wenj.txt','a') 2 if f.readable():#判定是否可读,如果没有这行则会报错 3 content=f.readlines() 4 for i in content: 5 print(i,end=' ') 6 f.close() 7 -----------------------------------------------------
12.一般来说,一般文件特别大的时候,可以使用readline:按行加载,可节省内存,但相对性能较低;而read和readlines虽然占用内存,但处理性能较高
三.文件方法
补充1:
1 txt=open('write.txt','w') 2 try: 3 for i in range(10): 4 10/(i-5) 5 txt.write(str(i)+'\n') 6 except Exception: 7 print('error:',i) 8 finally: 9 txt.close() 10 ------------------------------------------------------ 11 error: 5
补充2:
os模块可以对文件进行重命名,创建,删除,目录等操作