文件概述
文件
为了长期保存、重复使用
以文本或二进制形式
存放于外部存储器中的数据保存形式
二进制文件
数据以二进制的形式存储,需要特定的应用软件打开和运行
图片文件(jpeg)、视频文件(mpeg)、Windows下的可执行文件(exe)
文本文件
中西文字符、数字、标点等符号,文本编辑器打开,可直接阅读
文本文件(txt)、逗号分隔值(csv)、日志文件(log)、配置文件(ini)等
文件操作
打开:file_obj = open(file, mode='r', encoding=None) # 创建文件对象
操作:for line in file_obj: # 遍历文件
pass
file_obj.seek(offset, whence=SEEK_SET) # 改变指针位置,seek(0)开始
file_obj.read(size=-1) # 读整个文件为一个字符串
file_obj.write(s) # 写一个字符串进文件
file_obj.readline(size=-1) # 读一行为一个字符串
file_obj.readlines(hint=-1) # 读为每行为字符串元素的列表
file_obj.writelines(lines) # 写字符串\n为元素的列表
file_obj.tell() # 返回指针当前位置
关闭:file_obj.close() # 关闭文件对象
文件的打开与关闭
文件的打开
open(file, mode='r', encoding=None)
将文件以文本形式或二进制形式打开,用于读或写操作
1.file 参数
是一个带路径的文件名,字符串
绝对路径是从根目录开始的完整路径
file_obj = open('D:\\test\\temp.txt')
相对路径是相对当前打开文件位置的路径
file_obj = open('./data/temp.txt')
文件与程序在相同文件夹下时可不加路径
file_obj = open('temp.txt')
2.mode 可选参数
指定文件打开的方式和类型
缺省时使用默认值'r',以只读方式打开
file_obj = open('temp.txt')
file_obj = open('temp.txt', 'r')
3.encoding 可选参数
指明文本文件采用何种字符编码
中文windows10 一般默认GBK 编码
Mac 和Linux等一般默认编码为UTF-8 编码
纯英文文件,可以省略此参数
file_obj = open('temp.txt', 'r')
file_obj = open('temp.txt', 'r', encoding='utf-8')
file_obj = open('temp.txt', 'r', encoding='GBK')
4.'w'
以写数据模式打开文件
若文件已存在,先清除该文件中所有内容 若文件不存在,先创建该文件再打开
file_obj = open('temp.txt', 'w')
5.'a'
以追加写数据模式打开文件
若文件已存在,新数据追加在现有数据之后 若文件不存在,先创建文件后在打开
file_obj = open('temp.txt', 'a')
6.'x'
以创建文件写数据模式打开文件
若文件已存在,打开失败
避免误操作覆盖现有文件
file_obj = open('temp.txt', 'x')
7.'t'
以文本模式打开文件处理数据(默认模式)
file_obj = open('temp.txt', 'rt')
8.'b'
以二进制模式打开文件处理数据
file_obj = open('temp.txt', 'rb')
9.'+'
打开文件并允许更新 相当于增加读或写模式
与 'r'、'w' 或 'a' 组合使用 'r+'可读可写、'w+'可写可读、'a+'可追加写可读
file_obj = open('temp.txt', 'r+')
file_obj = open('temp.txt', 'w+')
file_obj = open('temp.txt', 'a+')
文件的遍历
返回一个可遍历的文件对象
可以遍历访问文件中的数据
每个循环获得文件中的一行数据
行末有一个换行符'\n'
file_obj = open('静夜思.txt', 'r', encoding='utf-8')
for line in file_obj:
print(line)
print(line.strip())
文件的关闭
file_obj.close()
文件使用完毕必须关闭文件对象
以确保对文件中数据的所有改变都写回到文件中
释放文件的读写权限,使其他程序可以操作该文件
忘记关闭文件或程序在执行file_obj.close()语句之前遇到错误,导致文件不能正常关闭
异常处理
上下文管理器
文件打开操作置于 “with … as”管理的上下文管理器中
不需要用file_obj.close()显式的关闭文件
离开缩进代码范围,自动关闭文件对象