文件操作
通过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()删除目录