文件操作
使用文件的目的:把执行代码时产生的数据存储起来,下一次执行代码时直接使用,不必重新在制作一份
文件操作方式:打开文件、读/写文件数据、关闭文件
打开文件
表现形式1:f = open("test.txt","r")
以读的方式打开已存在的名为test.txt的文件,使用变量f指向打开的test.txt文件
注意事项:
1、文件test.txt若不存在代码将报错并退出
2、以读的方式打开的文件无法向文件中写入数据
3、文件名与操作方式(读/写)都要加成对引号
4、如果是以读的方式打开文件"r"可省略不行,默认为以读的方式打开,也可以写成f = open("test.txt")
表现形式2:f = open("test.txt","w")
以写的方式打开文件test.txt,test.txt文件若存在,则覆盖,test.txt文件若不存在,则创建文件test.txt,使用变量f指向打开的test.txt文件
注意事项:
以写的方式打开的文件无法读取文件内容
表现形式3:f = open("test.txt","a")
以写的方式打开文件test.txt,test.txt文件若存在,写入的内容会追加在原文件内容末尾,test.txt文件若不存在,则创建文件test.txt,使用变量f指向打开的test.txt文件
关闭文件
表现形式:close()
例如:关闭文件test.txt
f = open("test.txt","w")
f.close()
注意事项:关闭文件与打开文件成对使用,不可以打开文件操作后不关闭文件
文件的读写
向文件中写入数据(write):
如图:
注意:
1、如果文件不存在则创建,如果存在就先将文件清空,然后写入数据
2、写入文件操作是从文件开头开始
3、图中的11表示向文件中写入了多少字节内容
从文件中读取数据(read):
1、按文件内容中长度读取read(num),如图:
注意:
num的单位是字节,表示每次读取的字节数
多次读取时下一次读取的内容是从上一次读取完内容的位置开始的
2、将文件中内容全部读取read(),如图:
注意:一般不建议使用这种读取方式,因为如果文件过大(比如5G),内存很小(比如4G)的情况下,一次全部读取文件内容会令程序死掉
3、将文件中内容全部读取,但按照行的方式显示readlines(),如图:
注意:readlines读取方式得到的是一个列表,每行的内容为一个元素
4、按文件内容中行内容读取readline(),如图:
文件的定位读写
文件的定位读写就是从文件的某一位置开始进行读写
表现形式:seek(offset,from)
offset:偏移量(单位:字节)
from:从哪个位置开始便宜,共有三个参数(0:表示文件开头 1:表示当前位置 2:表示文件末尾)
例如:
从文件开头并且偏移3个字节开始读取
文件的重命名、删除
说明:文件重命名、删除操作需要python的os模块支持
重命名:os.rename(需要修改的原文件名, 新的文件名)
删除:os.remove(需要删除的文件名)
如:
import os
os.rename("test.txt","新test.txt")
os.remove("test.txt")
文件夹的相关操作
说明:文件夹的相关操作需要python的os模块支持
获取当前所在目录:os.getcwd()
创建文件夹:os.mkdir("test")
删除文件夹:os.rmdir("test")
跳转到其他目录:os.chdir("aaa")
获取目录下文件夹和文件名称:os.listdir()(得到的数据类型是列表)
应用小练习
制作文件的备份
要求:通过输入的文件名称备份该文件内容,且将文件名字更改成原文件名【复件】
注意点:
1、想要在test.txt更改成test[复件].txt先要找到点的索引值,然后将字符串切片重组
2、尽量不要一次全部读取原文件,所以使用每次读取1024字节来读取
3、读取或者写入文件后不要忘记关闭文件
批量修改文件名
要求:通过输入的文件夹名称将文件夹下的所有文件全部重命名,在每个文件名开头上加上【测试修改】
如图:
图1:重命名前
图1
图2:重命名后
注意事项:
1、需要python下os模块支持
2、rename()只能修改当前路径下的文件,所以需事先跳转到test文件夹下
3、获取文件名称操作得到的是列表,所以可以通过遍历列表来获取每一个文件名