Python基础【文件】
admin
2023-07-14 17:44:34
0

文件

文件的打开

函数:open(filename,mode)
返回:一个文件对象
filename为文件名,mode为打开的模式

代码:

file = open('filename','r')
print(file)

测试结果:

Python基础【文件】


  • 模式:
  • r:只读模式打开,文件指针放在开头
  • w:写模式,默认从文件开头开始覆写(会删除已有内容)
  • a:追加(写),默认从文件尾部开始写
  • b:以二进制形式打开(打开非纯文本文件时使用)
  • +:可读可写
  • x:创建并进入写模式,文件存在则报错
  • t:文本模式
    注:‘b’ ’t‘ ‘+’需和其他模式组合使用,w和a如果不存在目标文件则会创建新文件,r模式不存在则会报错。

代码:

file = open('test_file','r') #test_file不存在,报错

测试结果:

Python基础【文件】


文件对象的方法

上面我们创建了一个名为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())

    测试结果:

    Python基础【文件】


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

相关内容

热门资讯

特朗普:正致力于与伊朗达成协议... 特朗普在《纽约邮报》一档播客访谈节目中称,他正与伊朗磋商一项协议,伊朗已同意不再谋求拥有核武器。他表...
不接壤的日菲为何偷划海界? 日菲近日发表联合声明,宣称就“划定两国专属经济区和大陆架的海洋边界”启动正式谈判。两个隔海相望的国家...
凤凰晚报丨从钳工到老戏骨,魏宗... 今日人物【从钳工到老戏骨,魏宗万用一生诠释“戏比天大”】6月1日,表演艺术家魏宗万在上海逝世,享年8...
科威特称伊朗袭击致63人受伤 科威特卫生部门3日称,伊朗当天对科威特的袭击已造成63人受伤,相关部门已启动紧急应对预案,并在全国范...
日本标榜“和平国家”却行扩军备... 今年是东京审判开庭80周年,世界正回望历史、反思战争罪责、捍卫二战后来之不易的国际秩序之际,日本却迈...
浙江杨梅即将大规模上市,如何破... “我们现在的压力很大。”5月底,浙江余姚杨梅产区丈亭镇副镇长林宇站在一片杨梅林前对第一财经表示,当地...
致5死2伤!韩国就韩华航空航天... 【环球网报道 记者 姜蔼玲】据韩联社6月1日报道,针对位于韩国大田的韩华航空航天公司发生爆炸致7人伤...
黄河科技学院2026年招生简章 长按图片识别二维码或点击 “阅读原文” 查看电子招生简章。
医路起航,从“心” 开始!黄河... 6月1日上午,黄河科技学院附属医院2022级临床医学本科实习生入院岗前培训在大医讲堂顺利举办。院领导...
问题居然在实体卡槽上!美版iP... 6月2日消息,日前,又有博主提前把还没发布的iPhone 18 Pro电池参数给曝光了出来,根据爆料...