
本文共 4012 字,大约阅读时间需要 13 分钟。
15 文件的理解
文件是数据的抽象和集合,是存储在辅助存储器上的数据序列。从存储的角度来看,文件可以看作是计算机世界的容器,用于整理和管理不同的数据内容。
15.1 文件的展现形态
从外观上看,文件可以分为文本文件和二进制文件两种类型。虽然不同的文件类型在存储时有不同的表现形式,但本质上所有的文件都是以二进制形式存储的。这意味着即使是一些看起来是文本的文件,也是以二进制字节为基础的。例如,常见的图片文件(如.png、.avi)和音频文件都属于二进制文件类别,它们没有统一的编码方式。
15.2 文件的打开与关闭
在Python中,文件的状态可以分为两种:未打开(存储状态)和已打开(占用状态)。文件可以通过open
函数打开,并指定读取或写入的模式。一旦文件操作完成,应该及时使用close
方法关闭文件,以释放占用的资源。
常用文件操作方法
读取文件:
a.read(size)
:读取指定的字节数。a.readline()
:读取单行文本,默认读取一行。a.readlines(hint)
:读取全部内容或指定的行数。
写入文件:
a.write(s)
:将字符串写入文件。a.writelines(lines)
:将一个字符串列表逐行写入文件。
定位文件指针:
a.seek(offset, from)
:调整文件内部的读取或写入位置。
关闭文件:
a.close()
:释放文件资源。
示例代码
# 示例:读取文件a = open('h.txt', 'rt').read(5)print(a)# 示例:逐行读取文件b = open('h.txt', 'rt').readline()print(b)# 示例:读取所有内容c = open('h.txt', 'rt').readlines()print(c)# 示例:书写操作f = open('h.txt', 'w')a = f.write('中国')f.close()# 示例:批量写入文件l = ['中国', '美国', '法国']f = open('h.txt', 'w')b = f.writelines(l)f.close()f = open('h.txt')d = f.read()print(d)f.close()# 示例:with语句的应用with open(r'C:\Users\Administrator\Desktop\h.txt', 'r') as f: # 定位到文件的第6个字节位置 f.seek(6, 0) strChar = f.read() print(strChar)
15.3 文件的打开模式
文件打开时需要指定模式,常用的模式包括:
只读模式('r'):默认模式,适用于文本文件。如果文件不存在,会抛出FileNotFoundError
错误。
覆盖写模式('w'):如果文件不存在则创建,存在则完全覆盖内容。
创建写模式('x'):只有在文件不存在时创建,存在则抛出FileExistsError
错误。
追加写模式('a'):文件不存在则创建,存在则在末尾追加内容。
二进制模式('b'):处理二进制文件,如图片、音频等。
文本模式('t'):默认文本读写模式,处理文本文件。
二进制模式与文本模式的区别
二进制模式和文本模式的主要区别在于换行字符的处理方式。在文本模式下,换行符会被解释为\n
,而在二进制模式下,换行符会被保留为原始字节。
15.4 文本的遍历方法
在阅读文件时,可以选择一次性读入全部内容,或者逐行或逐字节读取,具体选择取决于读取需求。
一次性读入:
f = open('h.txt', 'rt')content = f.read()f.close()
按量读入:
f = open(r'C:\Users\Administrator\Desktop\h.txt', 'rt')while True: chunk = f.read(2) if not chunk: break print(chunk)f.close()
按行读取:
f = open('h.txt', 'rt')for line in f.readlines(): print(line)f.close()
逐行读取:
f = open('h.txt', 'rt')for line in f: print(line)f.close()
15.5 with语句
with
语句是一种上下文管理协议(ContextManagementProtocol),其作用是保证资源的生命周期管理。在使用文件时,with
语句能自动关闭文件句柄,避免资源泄漏。写文件的时候可以直接读取或修改文件内容,操作完成后with
语句会自动关闭文件。
示例
with open(r'C:\Users\Administrator\Desktop\h.txt', 'r') as f: for i in f.readlines(): print(i)
多余的内容会被自动去除,请放心阅读《文件的理解》# 15.1 文件的理解文件是数据的抽象和集合,文件是存储在辅助存储器上的数据序列。# 15.2 文件的展现形态文件展现形态:文本文件和二进制文件。本质上所有的文件都是二进制存储。二进制文件没有统一的编码,如.png、.avi。## 文本文件和二进制文件`f.txt`文件保存:"中国是个伟大的国家!"## 文本形式```pythonaf = open('C:/Users/ZY/Desktop/f.txt','rt')print(af.readline())af.close()# 输出:中国是个伟大的国家!## 二进制形式```pythonbf = open('C:/Users/ZY/Desktop/f.txt','rb')print(bf.readline())bf.close()# 输出:b'\xd6\xd0\xb8\xfa\xca\xc7\xb8\xf6\xce\xb0\xb4\xf3\xb5\xc4\xb8\xfa\xbc\xd2!'
15.3 文件的打开与关闭
文件存在两种状态:存储和占用。文件打开时需要注意以下几点:
文件打开方式
## 打开文件open('filename','模式')## 读取文件a.read(size) ## 读取指定的字节数a.readline(size) ## 读取字符串,默认读取一行a.readlines(hint) ## 读取全部内容或指定行数## 写文件a.write(s) ## 写入一个字符串a.writelines(lines) ## 将一个元素全为字符串的列表写入文件a.seek(offset, from) ## 设置读写指针位置## 关闭文件a.close
示例
a = open('C:/Users/ZY/Desktop/h.txt','rt').read(5)print(a)b = open('C:/Users/ZY/Desktop/h.txt','rt').readline()print(b)c = open('C:/Users/ZY/Desktop/h.txt','rt').readlines()print(c)f = open('C:/Users/ZY/Desktop/h.txt','w')a = f.write('中国')f.close()f = open('C:/Users/ZY/Desktop/h.txt')c = f.read()print(c)f.close()l = ['中国','美国','法国']f = open('C:/Users/ZY/Desktop/h.txt','w')b = f.writelines(l)f.close()f = open('C:/Users/ZY/Desktop/h.txt')d = f.read()print(d)with open(r'C:\Users\Administrator\Desktop\h.txt', 'r') as f: f.seek(6, 0) strChar = f.read() print(strChar)with open(r'C:\Users\Administrator\Desktop\h.txt', 'r') as f: pos = f.tell() strChar = f.read(3) while strChar: print(pos) print(strChar) strChar = f.read(3) pos = f.tell()
15.4 文件的打开模式
文件的打开模式决定了文件的读写方式及其行为。常见的文件打开模式包括:
每种模式都有其特定的适用场景,选择时需根据具体需求决定。
adb ethics
发表评论
最新留言
关于作者
