侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python的文件操作方法汇总

Python  /  管理员 发布于 7年前   139

文件的读操作

示例:

 print("->文件句柄的获取,读操作:")  f = open('无题','r',encoding='utf8') d = f.read() f.close() print(d)  print('->例二:') f = open('无题','r',encoding='utf8') e = f.read(9) f.close() print(e) #python3中,文件中一个中英文都占位1

运行结果:

复制代码

->文件句柄的获取,读操作:昨夜星辰昨夜风画楼西畔桂堂东身无彩凤双飞翼心有灵犀一点通->例二:昨夜星辰昨夜风画

文件的写操作

知识点:

    1. 写操作前,文件先格式化清空文件

    2.清空操作,在执行open的w方法后,清空

print("写的操作,写文件的时候,不能调用读方法,读文件的时候,不能调用写方法") f = open('python','w',encoding='utf8')f.write("I must learn python \nbecause, python is important \n")f.write("java is better?")f.write("maybe") #上面的语句,没有加换行符,所以输出的内容是紧接的f.close()

运行结果:

打开文件后显示如下

I must learn python because, python is important java is better?maybe

文件的append方法

语法格式:

f = open('文件名','a','encoding = utf8')

文件这种方法为追加模式:1, 空白文件中,直接从头开始写入内容; 2 有内容的文件,会在末尾开始继续写入内容

示例:

f = open('python','a',encoding='utf8')f.write("花开又花落")f.close()

运行结果:

I must learn python because, python is important java is better?maybe花开又花落 

readline 和 readlines

 readline是逐行读取

readlines是全文读取

示例:

 print("readline方法") f = open('无题','r',encoding='utf8') a = f.readline() print("此时光标位置:",f.tell()) b = f.readline() print("此时光标位置:",f.tell()) print(a.strip()) #strip是字符串方法中去除空格和换行的方法 print(b.strip())   print("readlines方法,会将每行的内容组成一个列表打印") f = open('无题','r',encoding='utf8') c = f.readlines() print(c) print(id(c)) print(id(f)) for i in c:  print(i.strip()) print("遍历方法") f.seek(0) for i in f:  print(i.strip()) f.close() #文件的操作中,close()方法一定不能忘记

运行结果:

readline方法此时光标位置: 23此时光标位置: 46昨夜星辰昨夜风画楼西畔桂堂东readlines方法,会将每行的内容组成一个列表打印['昨夜星辰昨夜风\n', '画楼西畔桂堂东\n', '身无彩凤双飞翼\n', '心有灵犀一点通']378268245344280昨夜星辰昨夜风画楼西畔桂堂东身无彩凤双飞翼心有灵犀一点通遍历方法昨夜星辰昨夜风画楼西畔桂堂东身无彩凤双飞翼心有灵犀一点通

文件的tell() 和 seek()方法

 示例:

f = open('无题','r',encoding='utf8')f.read(4)print('当前光标位置',f.tell())f.seek(10)print('当前光标位置',f.tell())f.close()#read时,一个中文算三个字符

运行结果:

当前光标位置 12
当前光标位置 10

文件操作之flush方法

import sys,timefor i in range(20): sys.stdout.write("#") sys.stdout.flush() time.sleep(1)

truncate方法

f = open('test','w')f.write("hello")f.write("\n")f.write("python")f.flush() #这样不用执行close方法,内存中的数据,就会写入到diskf.close()f = open('test','a')f.truncate(2) #截断方法,光标从2开始往后截取f.close()

其他的文件方法: r+ 读写方法

基于字符read & write

最基本的文件操作当然就是在文件中读写数据。这也是很容易掌握的。现在打开一个文件以进行写操作:

fileHandle = open ( 'test.txt', 'w' )

‘w'是指文件将被写入数据,语句的其它部分很好理解。下一步就是将数据写入文件:

fileHandle.write ( 'This is a test.\nReally, it is.' )

这个语句将“This is a test.”写入文件的第一行,“Really, it is.”写入文件的第二行。最后,我们需要做清理工作,并且关闭文件:

fileHandle.close()

正如你所见,在Python的面向对象机制下,这确实非常简单。需要注意的是,当你再次使用“w”方式在文件中写数据,所有原来的内容都会被删除。如果想保留原来的内容,可以使用“a”方式在文件中结尾附加数据:

fileHandle = open ( 'test.txt', 'a' ) fileHandle.write ( '\n\nBottom line.' ) fileHandle.close()

然后,我们读取test.txt,并将内容显示出来:

fileHandle = open ( 'test.txt' ) print fileHandle.read() fileHandle.close()

以上语句将读取整个文件并显示其中的数据。

基于行的读写 line

fileHandle = open ( 'test.txt' ) print fileHandle.readline() # "This is a test." fileHandle.close() 

同时,也可以将文件内容保存到一个list中:

fileHandle = open ( 'test.txt' ) fileList = fileHandle.readlines() for fileLine in fileList: print '>>', fileLine fileHandle.close() 

 或者在文件中一次读取几个字节的内容:

fileHandle = open ( 'test.txt' ) print fileHandle.read ( 1 ) # "T" fileHandle.seek ( 4 ) print FileHandle.read ( 1 ) # " "(原文有错)


  • 上一条:
    python先序遍历二叉树问题
    下一条:
    python使用正则表达式的search()函数实现指定位置搜索功能
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客