一、文件权限
访问模式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。如果文件不存在,则报错 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。写入的内容必须为字符串 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
二、文件指针
1、 r 和 w 模式打开文件,文件指针在文件起始位置。
2、a 打开文件,文件指针在末尾
3、对文件进行任何读写操作,都会改变文件指针位置
4、unix/linux换行为\n,mac换行为\r,windows换行为\r\n
5、f.tell() 返回当前指针的读写设置,是当前位置距离文件开头的位置
6、f.seek(offset , whence)
offset:偏移量,偏移距离whence指定位置的偏移量
whence:(0,1,2)0表示文件开头,1表示当前位置,2表示文件结尾位置。 1和2只能在二进制下使用
三、文件操作
1、文件的打开
f = open(filename, 文件权限,encoding="utf-8")
2、文件的关闭
f.close()
3、f.write(字符串)
文件写数据,如果文件不存在那么创建文件,如果存在,先清空,然后写入数据。
4、①details = f.read(num)
文件读数据,num表示读取数据的长度(字节),如果不传入num,就全部读取
如果使用读了多次,那么后面读取的数据是从上次读完后的位置开始的。
②details = f.readline()
一行一行的读取,
③details = f.readlines()
读取所有数据,返回一个列表,每一行为列表的一个元素
5、f.flush()
文件缓冲区的处理,将缓冲区的文件写入磁盘里,不清空缓冲区,也不需要关闭文件。
6、文件信息处理
①f.encoding 显示文件用的编码
②f.name 获得文件的名字
③f.mode 获得文件的权限
④f.closed 返回bool。判断文件是否关闭
7、上下文管理器
with open("xxxxx.txt", "r+") as f: 打开文件,写入,不用关闭
f.write("python")
四、文件目录操作(import os模块)
1、 path = os.getcwd()
返回当前文件所在的绝对路径。
2、 路径:
①绝对路径:从磁盘根目录开始,到指定文件的完整路径
②相对路径:相对于某个目录的路径,cd ..表示上一级目录
3、 os.path.exists(“dirname”)
判断某个文件是否存在,返回bool
4、 os.remove()
删除指定文件。
5、 os.rmdir()
删除指定文件夹
6、 os.rename(oldname,newname)
给指定文件或者文件夹重命名
7、 os.listdir(指定目录)
获取指定目录下的所有文件,返回一个列表
8、 os.mkdir()
创建一个文件夹
9. os.makedirs(test\test\test)
创建多个目录,递归创建目录
10、os.chdir()
改变默认目录
五、任意文件的拷贝
import os
# 输入你要备份的文件名
dir_name = input("请输入你要备份的文件名:")
path = os.getcwd(dir_name)
if os.path.exists(dir_name):
pass
else:
print("该文件不在指定路径。")
# 新的文件夹名字
# 判断后缀
location = dir_name.rfind(".")
new_dir_name = dir_name[:location] + "_backup" + dir_name[location:]
# 打开原文件,因为是二进制文件
# 打开新文件,分别读和写
f_old = open(dir_name, "rb")
f_new = open(new_dir_name, "wb")
details = f_old.read(1024 * 1024)
f_new.write(details)
f_new.close()
f_old.close()