扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
文件的打开
函数:open(filename,mode)
返回:一个文件对象
filename为文件名,mode为打开的模式创新互联-专业网站定制、快速模板网站建设、高性价比三门峡网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式三门峡网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖三门峡地区。费用合理售后完善,10多年实体公司更值得信赖。
代码:
file = open('filename','r')
print(file)测试结果:
- 模式:
- r:只读模式打开,文件指针放在开头
- w:写模式,默认从文件开头开始覆写(会删除已有内容)
- a:追加(写),默认从文件尾部开始写
- b:以二进制形式打开(打开非纯文本文件时使用)
- +:可读可写
- x:创建并进入写模式,文件存在则报错
- t:文本模式
注:‘b’ ’t‘ ‘+’需和其他模式组合使用,w和a如果不存在目标文件则会创建新文件,r模式不存在则会报错。代码:
file = open('test_file','r') #test_file不存在,报错
测试结果:
文件对象的方法
上面我们创建了一个名为file的文件对象,下面介绍文件对象的方法:
读操作
- 函数:file.read(size)
返回:从当前指针位置开始读取,以 字符串 或 字节 对象形式返回读取到的数据
size为数值类型的参数,决定读取数据的长度,省略或小于0则读取文件的所有内容- 函数:file.readline(limit)
返回:从当前指针位置开始读取一行,以 字符串 或 字节 对象形式返回该行数据,返回空说明已经读到了文件的最后一行
limit为数值类型的参数,可以限制单行读取的数据长度- 函数:file.readlines(sizeint)
返回:从当前指针位置开始读取,以列表形式,返回文件的所有行(以行为界分割的字符串所组成)
sizeint为数值类型的参数,决定读取数据的长度
写操作
- 函数:file.write(string)
返回:返回当前指针所在的位置
string为写入文件的字符串- 函数:file.writelines(seq)
返回:返回当前指针所在的位置
seq为即将写入的序列,自动将字符串拼接并从当前位置写入
文件对象位置
- 函数:f.tell()
返回:文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
调整文件对象位置
- 函数:f.seek(offset, from_what)
返回:返回更改后的所处位置
offset为移动的相对位置,2表示后移2个,-1表示前移1个
from_what为参考点,0为文件开头,1为当前位置,2为文件末尾
注:文本文件中没有用二进制打开的文件必须从开头计算位置,即from_what为0,否则会报错。
关闭文件
- 函数:file.close()
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源
如果尝试再调用该文件,则会抛出异常。代码:
file = open('test_file','w+') file.write("hello python\nhello world\nhello westos\n*****") file.close() file = open('test_file','r') print(file.read()) file.seek(0,0) print(file.readable()) print(file.readline()) print(file.tell())
测试结果:
with语句
利用with语句可以简化文件的打开和关闭
with语句执行完毕后会自动关闭文件对象
语法:with expression as f: 语句
- 利用with语句将文件1中的数据写入文件2:
with open('data.txt') as f1,\ open('data_test','w+') as f2: f2.write(f1.read())
利用yeild实现文件的读取
def bylineread(filename): # 定义一个生成器 with open(filename) as f: # 打开文件 line = f.readline # 读取一行 while line: # 读到最后一行跳出循环 yield line line = f.readline() # 读取一行 read = bylineread('data.txt') # read代表生成器对象 for item in read: # 遍历生成器对象中的元素 print(item)
Iterable
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流