文件类型:文本文件、二进制文件
文本文件:由单一特定编码组成的文件,如UTF-8编码
二进制文件:直接由比特0和1组成,没有统一字符编码
文件处理的步骤:打开-处理-关闭
a.read(size)、a.readline(size)、a.readlines(hint)
a.write(s)、a.writelines(lines)、a.seek(offset)
打开文件
<变量名>=open(<文件名>,<打开模式>)
文件路径和名称
7种文件打开模式:
‘r’ 只读模式,默认值,如果文件不存在,返回FileNotFoundError
'w' 覆盖写模式,文件不存在则创建,存在则完全覆盖
‘x’ 创建写模式,文件不存在则创建,存在则返回FileExistsError
'a' 追加写模式,文件不存在则创建,存在则在文件最后增加内容
‘b’ 二进制文本模式
‘t’ 文本文件模式,默认值
‘+’ 与r/w/x/a一同使用,在原功能基础上增加同时读写功能
例子:
f=open("f.txt") 文本形式,只读模式,默认值
f=open("f.txt","rt") 文本形式,只读模式,默认值
f=open("f.txt","w") 文本形式,覆盖写模式
f=open("f.txt","a+") 文本形式、追加写模式+读文件
f=open("f.txt","x") 文本形式,创建写模式
f=open("f.txt","b") 二进制形式,只读模式
f=open("f.txt","wb") 二进制形式,覆盖写模式
关闭文件
<变量名>.close()
文件内容读取
<f>.read(size=-1) 读入全部内容,如果给出参数,读入前size长度 s=f.read(2)
<f>.readline(size=-1) 读入一行内容,如果给出参数,读入改行前size长度 s=f.readline() 读入当前指针对应的一行信息
<f>.readlines(hint=-1) 读入文件所有行,以每行元素形成列表,如果给出参数,读入前hint行
1文件的全文本操作 遍历全文本
方法一:
fname=input("请输入要打开的文件名称:")
fo=open(fname,"r")
txt=fo.read() #对全文txt进行处理
fo.close()
方法二:
fname=input("请输入要打开的文件名称:")
fo=open(fname,"r")
txt=fo.read(2)
while txt !=" ":
#对txt进行处理
txt=fo.read(2)
fo.close()
逐行遍历
方法一:
fname=input("请输入要打开的文件名称")
fo=open(fname,"r")
for line in fo.readlines():
print(line)
fo.close()
方法二:
fname=input("请输入要打开的文件名称")
fo=open(fname,"r")
for line in fo:
print(line)
fo.close()
数据的文件写入
<f>.write(s) 向文件写入一个字符串或字节流
<f>.writelines(lines) 将一个元素全为字符串的列表写入文件 ls=["中国","法国"] f.writelines(ls) 中国法国 各元素直接拼接后写入
<f>.seek(offset) 改变当前文件操作指针的位置 0-文件开头;1-当前位置;2-文件结尾 f.seek(0)到文件的开头位置
例:
fo=open("output.txt","w+")
ls=["中国",“法国”,“美国”]
fo.writelines(ls)
for line in fo:
print(line)
fo.close() --没有任何输出
fo=open("output.txt","w+")
ls=["中国",“法国”,“美国”]
fo.writelines(ls)
fo.seek(0)
for line in fo:
print(line)
fo.close()
二维数据的读入处理
从csv格式的文件中读入数据
fo=open(fname)
ls=[]
for line in fo:
line=line.replace("\n","")
ls.append(line.split(","))
fo.close()
将数据写入csv格式的文件
ls=[[],[],[]]
f=open(fname,'w')
for item in ls:
f.write(','.join(item)+'\n')
f.close()