【一】文件概述
1.文件标识
意义:找到计算机中唯一确定的文件
组成:文件路径、文件名主干、文件扩展名
2.文件类型(文本文件 ,二进制文件)
文本文件:专门存储文本字符数据。
二进制文件:不能直接使用文字处理程序正常读写,必须先了解其结构和序列化规则,再设计正确的反序列化规则,才能正确获取文件信息。
3.标准文件(stdin(标准输入文件, stdout(标准输出文件), stderr(标准错误文件))
【二】文件的基本操作
1.文件的打开(open)和关闭(close)
打开模式 | 名称 | 描述 | |
r/rb | 只读模式 | 以只读的形式打开文本文件/二进制文件,若文件不存在或无法找到,文件打开失败 | |
w/wb | 只写模式 | 以只写的形式打开文本文件/二进制文件,若文件已存在,则重写文件,否则创建新文件 | |
a/ab | 追加模式 | 以只写的形式打开文本文件/二进制文件,只允许在该文件末尾追加数据,若文件不存在,则创建新文件 | |
r+/rb+ | 读取(更新)模式 | 以读/写的形式打开文本文件/二进制文件,若文件不存在,文件打开失败 | |
w+/wb+ | 写入(更新)模式 | 以读/写的形式打开文本文件/二进制文件,若文件已存在,则重写文件 | |
a+/ab+ | 追加(更新)模式 | 以读/写的形式打开文本/二进制文件,只允许在文件末尾添加数据,若文件不存在,则创建新文件 |
2.文件的读取
Python提供了一系列读写文件的方法,包括读取文件的read()、readline()、readlines()方法和写文件的write()、writelines()方法
1/read
read()方法可以从指定文件中读取指定字节的数据,其语法格式如下:
with open('file.txt', mode='r') as f:
print(f.read(2)) # 读取两个字节的数据
print(f.read())
2/readline()
readline()方法可以从指定文件中读取一行数据,其语法格式如下:
with open('file.txt', mode='r', encoding='utf-8') as f:
print(f.readline())
print(f.readline())
3/readlines()
readlines()方法可以一次读取文件中的所有数据,若读取成功,该方法会返回一个列表,文件中的每一行对应列表中的一个元素
with open('file.txt', mode='r', encoding='utf-8') as f:
print(f.readlines())
4//注意
read()(参数缺省时)和readlines()方法都可一次读取文件中的全部数据 但因为计算机的内存是有限的,若文件较大,read()和readlines()的一次读取便会耗尽系统内存,所以这两种操作都不够安全。 为了保证读取安全,通常多次调用read()方法,每次读取size字节的数据
3.文件的写入
1/write()
方法可以将指定字符串写入文件,其语法格式如下: write(data)以上格式中的参数data表示要写入文件的数据,若数据写入成功,write()方法会返回本次写入文件的数据的字节数
2/writelines(line)
以上格式中的参数lines表示要写入文件中的数据,该参数可以是一个字符串或者字符串列表。 若写入文件的数据在文件中需要换行,需要显式指定换行符
4.字符与编码
编码方式 | 语言 | 字符数 | 字节数 |
ASCII | 中文 | 1 | 2 |
英文 | 1 | 1 | |
UTF-8 | 中文 | 1 | 3 |
英文 | 1 | 1 | |
Unicode | 中文 | 1 | 2 |
英文 | 1 | 2 | |
GBK | 中文 | 1 | 2 |
英文 | 1 | 1 |
【三】文件的定位读写(tell() seek())
1.tell()
tell()方法用于获取文件当前的读写位置
with open('file.txt') as f:
print(f.tell()) # 获取文件读写位置
print(f.read(5)) # 利用read()方法移动文件读写位置
print(f.tell())
2.seek()
使用该方法可控制文件的读写位置,实现文件的随机读写
with open('file.txt') as f:
print(f.tell()) # 获取文件读写位置
print(f.read(5)) # 利用read()方法移动文件读写位置
print(f.tell())
1//注意
在Python3中,若打开的是文本文件,那么seek()方法只允许相对于文件开头移动文件位置,若在参数from值为1、2的情况下对文本文件进行位移操作,将会产生错误
【四】文件的目录管理
os模块中定义了与文件操作相关的函数,利用这些函数可以实现删除文件、文件重命名、创建/删除目录、获取当前目录、更改默认目录与获取目录列表等操作
1.管理文件
删除文件——os.remove(文件名)
文件重命名——os.rename(原文件名,新文件名)
创建/删除目录——os.mkdir(目录名)/os.rmdir(目录名)
获取当前目录——os.getcwd()
更改默认目录——os.chdir(路径名)
获取目录列表——os.listdir(目录/路径)