一、文件介绍
1、什么是文件
狭义说:文本文件;
广义说:超文本文件, 图片,声音,超链接,视频。
2、文件的分类 文件大体上可以分为两类,文件文件和二进制文件。
3、文件的作用 使用文件的目的是把一些数据存储存放起来。
4、使用文件的流程 我们操作一个文件的流程一般是 打开文件,读写文件,关闭文件。通过程序操作文件 的流程也是这三步,首先打开文件,然后读写文件,最后关闭文件。
二、读写文件简单操作
1、读取文件
file=open("./a.txt",mode="r")
print(file.read())
file.close()
2、写文件
#1.打开文件
file=open("./b.txt",mode="w")
#2.写入内容
ret=file.write("python")
#3.关闭文件
file.close()
mode=‘w’ 表示写文件
注意:如果文件不存在,会自动创建文件(不会创建目录)。
三、文件权限
读取操作 | r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模 式。 |
---|---|---|
读取操作 | rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开 头。一般用于非文本文件如图片等。 注意:二进制文件把内容表示为一个特殊的bytes字符串类型 |
读取操作 | r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
读取操作 | rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开 头。一般用于非文本文件如图片等 |
写操作 | wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文 件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在, 创建新文件。一般用于非文本文件如图片等 |
写操作 | w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头 开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件 |
写操作 | wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文 件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在, 创建新文件。一般用于非文本文件如图片等。 |
写操作 | a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件 的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文 件不存在,创建新文件进行写入 |
写操作 | ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针 将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之 后。如果该文件不存在,创建新文件进行写入。 |
写操作 | a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件 的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件 用于读写 |
写操作 | ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针 将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
四、文件操作
1、读操作
(1) .read() 调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,会导致程序卡 死,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字符的内容。
# read 读取
file=open("./a.txt",mode="r")
read=file.read()
print(read)
file.close()
(2) .readline() readline每次读取一行,并且自带换行功能 每一行末尾会读到\n
##readline读取
# file=open("./a.txt",mode="r")
# ret=file.readline()
# print(ret)
# print(file.readline())
# print(file.readline())
# file.close()
(3) .readlines() Readlines,一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来
##readlines
# file=open("./a.txt",mode="r")
# ret=file.readlines()
# for i in ret:
# print(i)
# file.close()
(4) .循环读取 file句柄是一个可迭代的对象因此,可以循环读取文件中的内容,每次读一行。
# file = open("./a.txt")
# t = []
# for i in file:
# print(i)
# file.close()
# # if i % 5==0 or i % 7==0:
# # t.append(i)
# # print(t)
# t.append(i)
# print(t)
# for i in eval(t):
# if int(i) % 5 == 0 or int(i) % 7 == 0:
# print(t)
# file.close()
2、写操作 (1) .write()
file=open("./i.txt",mode="w")
file.write("aaaaaaaa")
file.write("\n")
file.write("bbbbbbbb")
file.write("\n")
file.write("cccccccc")
file.close()
(2) .writelines() file.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。
#writelines
file=open("./o.txt",mode="w")
lst=["aa\n","bb\n","cc\n"]
file.writelines(lst)
file.close()
五、with 使用with方式操作文件,可以不用关闭文件,会自动关闭文件。
with open("./a.txt") as f:
ret=f.read()
print(ret)
六、乱码 python读写文件时,默认使用的编码为平台编码,也就是gbk。 在pycharm中创建的文件默认使用的是utf-8编码。
# with open("k.txt",mode="w") as f:
# f.write("哈哈呵呵嘻嘻咳咳")
# with open("D:/g.txt",mode="w") as f:
# f.write("呵呵")
# with open("k.txt",mode="w",encoding="utf-8") as f:
# f.write("嘻嘻")
七、文件其他操作
使用os模块对文件进行一些相关操作
1.重命名文件
#重命名文件
# os.rename("g.txt","a.txt")
2.删除文件
#删除文件
# os.remove("b.txt")
3.创建目录
(1).创建目录 mkdir()
#创建目录
# os.mkdir("file"
4.创建多级目录
#创建多层目录
# os.makedirs("a/b/c/d/f")
- 删除目录
#删除目录
# os.rmdir("file")
6.删除多级目录
#删除多层目录
# os.removedirs("a/b/c/d/f")
若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推。
如果上一层目录不为空则停止删除文件。如果file04不为空则报错。
7.获取当前所在目录
getcwd()
#获取当前目录
# path=os.getcwd()
# print(path)
8.获取目录列表
#获取当前文件列表
# lst=os.listdir(os.getcwd())
# print(lst)
- 切换所在目录 chdir()
改变当前脚本工作目录
#切换所在目录
# os.mkdir("file")
# os.chdir(os.getcwd()+"\\file")
# print(os.getcwd())
10.判断文件或文件夹是否存在 os.path.exits(path)
# #判断文件是否存在
# path=os.path.exists("text")
# print(path)
11.判断是否为文件
# #判断是否为文件
# bool=os.path.isfile("7.with.py")
# print(bool)
12.判断是否为目录
# #判断是否为目录
# bool=os.path.isdir("file")
# print(bool)
- 获取绝对路径
# #获取当前文件的路径
# print(__file__)
14、 判断是否为绝对路径
# #判断是否为绝对路径
# bool=os.path.isabs(os.getcwd("C:\\work\\docmont\\k.txt"))
# print(bool)
- 获取路径中的最后部分
# #获取当前路径的最后部分
# path=os.path.basename(__file__)
# print(path)
16、 获取路径中的路径部分 获取父目录部分。(不管最后是文件还是文件夹)
# #获取路径中的父目录部分
# path=os.path.dirname(__file__)
# print(path)
17、 将多个目录组织成路径返回
# #将多个目录组织成路径返回
# ret=os.path.join("file","ag","sada")
# print(ret)
18.获取文件信息
(1.)getatime()返回path所指向的文件或者目录的最后访问时间
# #获取文件最后访问的时间
# acess_time=os.path.getatime("C:\\work\\docmont\\k.txt")
# print(acess_time)
(2.)getctime()查看文件创建时间
# #获取文件创建的时间
# create_time=os.path.getctime("C:\\work\\docmont\\k.txt")
# print(create_time)
(3.).getmtime()返回path所指向的文件或者目录的最后修改时间
# # #获取最后修改的时间
# modify_time=os.path.getmtime("C:\\work\\docmont\\k.txt")
# print(modify_time)
(4.)getsize()查看文件的大小
# # #查看文件大小
# file_size=os.path.getsize("C:\\work\\docmont\\k.txt")
# print(file_size)