python编程基础之三十六
文件处理:文件处理包括读文件,写文件
读文件:
1、打开文件
2、读取文件
3、关闭文件
写文件:
1、打开文件
2、写如文件
3、关闭文件
无论是读取文件还是写文件都时需要打开文件,和关闭文件
打开文件:
fp = open(file [, mode='r', encoding=None, errors=None])
mode:文件打开模式
只读 | |
w | 写之前会清空文件的内容 |
a | 追加的方式,在原本内容中继续写 |
r+ | 可读可写 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
b | rb、wb、ab、rb+、wb+、ab+意义和上面一样,用于二进制文件操作 |
encodeing: 文件编码方式,不用于二进制文件,一般是utf-8,gbk
errors:指定如何处理编码和解码错误 ,适用于文本文件
返回值:一个可迭代的文件对象一般用fp
读取文件常用函数:
read([size]) 读取文件(读取size字节,默认读取全部),
readline([size]) 读取一行,如果指定size,将读入指定的字符数,
readlines() 把文件内容按行全部读入,返回一个包含所有行的列表
1 #打开文件 2 fp = open('qfile.txt','r',encoding='utf-8') 3 4 #读取文件全部内容 5 #content = fp.read() 6 #print(content) 7 8 #读取指定字符数,包括行尾的换行符\n 9 # print(fp.read(20)) 10 11 #读取一行 12 # print(fp.readline(5)) #读取指定字符数 13 # print(fp.readline()) #读取一整行,直到碰到一个\n 14 15 #读取所有行,返回列表 16 # print(fp.readlines()) 17 18 #关闭文件 19 fp.close()
关闭文件 :fp.close
文件的指针移动:file_obj.seek(offset,whence=0),
第一个参数表示偏移量,必须是正数
官方文件里面说的第二个参数whence可以是0,1,2
0 表示开始文件开始位置,
1 表示当前位置
2 表示文件结尾
但是使用1,2的时候总是报错,还没找到解决办法
返回值是新的位置
1 #1.txt内容:hello world 2 with open('1.txt','r',encoding='utf-8') as fp: 3 fp.seek(5) #移动到hello后的空格位置 4 print(fp.read(3)) #wo 5 fp.seek(0) #移动到开头 6 print(fp.read(5)) #hello 7 print(fp.tell()) #tell()显示当前指针位置
文件操作还有csv操作,
1 import csv 2 with open(r'csv\winequality-red.csv') as fp: #1.打开文件 3 #delimiter指定分隔符 4 csv_reader = csv.reader(fp,delimiter=';') #2.获取csv读取器 5 header = next(csv_reader) #获取第一行的标题 6 print(header) 7 for line in csv_reader: #3.遍历所有的行 8 print(line)
1 import csv 2 l1 = [[1,2,3],[4,5,6],[7,8,9]] 3 #打开文件时,要添加newline=''参数,否则会多一个空行 4 with open('1.csv','w',newline='') as fp: #1.打开文件 5 #delimiter='\t'指定数据分隔符 6 csv_writer = csv.writer(fp,delimiter='\t') #2.获取writer 7 for line in l1: 8 csv_writer.writerow(line) #3.写入文件