文件操作
通过python对计算机中的各种文件进行增删改查操作
文件打开
操作文件的步骤:1、打开文件。2、对文件进行各种操作。3、关闭文件
打开文件使用open()函数
open()函数中的file参数是要打开文件的名字
open()函数返回值:返回一个对象,这个对象代表了当前打开的文件
打开文件注意事项:
1、当目标文件和当前文件在同一个目录下,则直接使用文件名即可打开
2、当目标文件和当前文件不在同一个目录下时,则在文件名前加上文件的绝对路径
关闭文件使用close()函数
file_name=lianxi.txt
file_content=open(file_name)#打开文件
print(file_content.read())#
#read()方法读取文件中的内容,会将读取到的内容全部保存在一个字符串中返回
file_name.close#关闭文件
读取文件后,对文件进行完操作之后一定要将文件关闭,不关闭文件的话将一直占用内存
为了避免打开文件之后忘记关闭文件,可以使用“with open文件路径+文件名as别名”对文件进行打开。在with语句中可以直接有别名对文件进行操作,改文件也只能在with语句中进行操作,一单with语句结束文件就会自动关闭
with open ('lianxi.txt') as lx:
content=lx.read()
print (content)
print(lx.read())#此语句将会报错,报在关闭的文件上操作
注如果在被打开的文件内容是中文的话,需要再open函数里面加上编码参数encoding=‘utf-8’。如果不加这个参数的话会报错。
读取较大文件
调用read()函数,会将文本内容全部读取,若内容文件比较大,会一次性将文件的内容全部加载到内存中,容易导致内存溢出
read()函数参数size,默认值为-1,表示读取文件的全部内容,通过改变参数来指定读取字符的数量,指定size的值,这样read函数会读取起订数量的字符,每一次读取都是从上次读取到的位置开始读取,如果字符的数量小于size,则会直接读取剩余所有字符
with open('lianxi.txt') as lx:
while True:
content=lx.read(3)
if not content:
break
print(content)
其他的读取方式
readline()读取一行
readlies()改方式是一行一行读取,会将读取到的内容封装到列表中返回
with open('lianxi.txt') as lx:
content=lx.read()
content=lx.readline()
content=lx.readlines()
print (content)
文件写入
想文件中写入内容使用write()方法
write()函数向文件中写入内容的时候,函数需要传入一个字符串作为参数
如果要对文件进行写入操作,在打开文件的时候就要在read()方法中指定操作类型。不指定的话默认是以读取的方式打开,读取方式打开的话不能对文件进行写入操作
read()的操作类型:
1、‘r’:只读(默认方式,可以不传入)
2、“w”:表示可以写。使用“w”来写入文件,如果文件不存在会创建文件,如果文件存在会覆盖原文件的内容
3、“a”:表示追加。如果文件不存在,则会创建文件;如果文件存在,则会想文件中追加内容
4、“+”:为操作符增加功能
5、“r+”:即可读又可写,文件不会报错
6、“x”:用来创建文件,如果文件不存在则创建;如果文件存在则报错
with open('lianxi.txt','w')as lx:
lx.write('你好啊!!')
二进制文件读取
读取的方式:
1、‘t’:读取文本文件(默认方式)
2、‘b’:读取二进制文件
with open ('lianxi.txt','rt') as lx:
content=lx.read(10)#读取文本文件时,size是以字符为单位
with open ('lianxi.txt','rb') as lx:
content=lx.read(10)#读取二进制文件时,size是以字节为单位
读取文件的位置
tell()方法能获取档期读取到的位置
with open ('lianxi.txt','rt') as lx:
content=lx.read(10)
print(lx.tell())
seek()方法可以修改当前读取的位置,即可以指定从哪个位置开始读取
seek()可以和read()放的size参数结合使用,就能事项从哪里读取到哪里
with open ('lianxi.txt','rt') as lx:
lx.seek(3)
content=lx.read(10)
print (content)
注:中文是用utf-8进行编码,一个中文占3个字节,所有使用seek()读取中文时,参数须是3或3的倍数
文件的其他操作:
os模块,操作目录
os.listdir()获取当前目录结构
os.listdir(’…’)返回上一级
os.getcwd()获取当前所在的目录
os.chdir(‘c:/’)切换到c盘
os.mkdir()创建目录–当前文件
os.rmdir()删除目录