Python打开文件、文件读写操作、with方式、文件常用函数实例分析


Posted in Python onJanuary 07, 2020

本文实例讲述了Python打开文件、文件读写操作、with方式、文件常用函数。分享给大家供大家参考,具体如下:

打开文件:

在python3中,打开文件的函数是:

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

参数说明:

file--文件名
mode—打开模式,默认只读模式
buffering--如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
encoding—打开文件的编码方式

模式介绍:

r:只读模式(默认)

w :只写模式,如果文件不存在就创建,如果存在,写入的数据会覆盖原来的数据

b :二进制模式

t :文本模式

+:可写可读模式

a:追加模式,如果文件存在则文件指针指向文件末尾(追加数据),如果不存在就创建

r+:读追加模式,先读,再追加

w+:写读模式,先写,意味着原本内容丢失,再读。  

  • 如果对于含有非ascll字符的文件,必须使用encoding,否则会抛异常:

Python打开文件、文件读写操作、with方式、文件常用函数实例分析

print("r".center(50,'-'))
f=open("file.txt",encoding="utf-8")
print(f.read())
f.close()
-----------------
运行结果:
my
sas
aaa
fsafsa
中文
中文
葫芦娃

文件使用完毕后必须关闭: 文件指针.close() 


文件操作:

读操作:

读取文件内容如下:

Python打开文件、文件读写操作、with方式、文件常用函数实例分析

  • reads()是读出全部内容
print("r".center(50,'-'))
f=open("file.txt",encoding="utf-8")
print(f.read())
f.close()
---------------------------
运行结果:
my
sas
aaa
fsafsa
中文
中文
葫芦娃
  • readline()是读出一行
print("r".center(50,'-'))
f=open("file.txt",encoding="utf-8")
print(f.readline())
f.close()

-----------
运行结果:
my
  • readlines()是读出全部内容,并整理成一个列表
print("r".center(50,'-'))
f=open("file.txt",encoding="utf-8")
print(f.readlines())
f.close()




#------------------------r-------------------------
#运行结果:
['my\n', 'sas\n', 'aaa\n', 'fsafsa\n', '中文\n', '中文\n', '葫芦娃\n', '\n']
  • r+模式会根据读的内容来决定指针的位置
print("r".center(50,'-'))
f=open("file.txt","r+",encoding="utf-8")
# print(f.readline())
f.write("hello mike")
f.close()

结果:

Python打开文件、文件读写操作、with方式、文件常用函数实例分析

 

print("r".center(50,'-'))
f=open("file.txt","r+",encoding="utf-8")
print(f.readline())
f.write("hello mike")
f.close()

新结果:

Python打开文件、文件读写操作、with方式、文件常用函数实例分析 

写操作:

  • write():将一个字符串写入文件
myfile=open("myfile1","wb")
myfile.write(b"nnnnnn")
myfile.write("my葫芦娃".encode("utf-8"))
myfile.close()
  • writelines(可迭代对象) 将一个可迭代对象写入文件
myfile=open("myfile1","wb")
myfile.write(b"nnnnnn")

myfile.writelines([b'1',b'2',b'3',b'4'])
myfile.close()
  • 当需要写完之后即时读出来时,使用w+,然后将文件指针置回文件头:
myfile=open("myfile1","wb+")
myfile.write(b"nnnnnn")
myfile.seek(0)
print(myfile.read())
myfile.close()
      • 如果是需要读出特定位置,可以使用变量来记录位置
myfile=open("myfile1","wb+")
myfile.write(b"1nnnnnn")
site=myfile.tell()
myfile.write(b"2nnnnnn")
myfile.seek(site)##读出后一段
print(myfile.read())
myfile.close()

with:

  • 为了便捷的关闭文件,python增加了with功能,当with体执行完将自动关闭打开的文件:
with open("file.txt","r+",encoding="utf-8") as f:##将自动执行f.close()
 print(f.tell())
 f.write("金刚")
 for line in f:
  print(line,end="")
  • 可以同时打开多个文件:
with open("file.txt",'r') as f ,\
open("file.new",'r') as m:
 print(f.read(),m.read())

文件常用函数:

file.close():关闭文件。关闭后文件不能再进行读写操作

file.seek(offset[, whence]):设置文件当前位置

file.tell():返回文件当前位置。

myfile=open("myfile1","wb+")
myfile.write(b"1nnnnnn")
site=myfile.tell()
myfile.write(b"2nnnnnn")
myfile.seek(site)##读出后一段
print(myfile.read())
myfile.close()

file.flush():刷新文件内部缓冲,立即把内部缓冲区的数据写入文件,因为并不是马上将文件

import time
myfile=open("myfile1","wb+")
myfile.write(b"1nnnnnn")
time.sleep(10)
# myfile.flush()
myfile.write(b"2nnnnnn")
myfile.close()

上述代码,直到程序运行完成才一次性写入“1nnnnnn2nnnnnn”

import time
myfile=open("myfile1","wb+")
myfile.write(b"1nnnnnn")
myfile.flush()
time.sleep(10)
myfile.write(b"2nnnnnn")
myfile.close()

上述代码,可以看到,在程序sleep之前就已经写入了“1nnnnnn”

file.truncate([size]):截取文件,从文件开头,截到指定位置,会覆盖原文件。

文件内容:

Python打开文件、文件读写操作、with方式、文件常用函数实例分析

print("r".center(50,'-'))
f=open("file.txt","r+",encoding="utf-8")

print(f.readline())
print("----truncate()-------")
print(f.tell())
m=f.tell()
f.truncate(m)#内容从0位置截断到指定位置,不论当前光标位置
f.close()

执行后,文件内容:

Python打开文件、文件读写操作、with方式、文件常用函数实例分析

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
MAC中PyCharm设置python3解释器
Dec 15 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
使用Python来开发微信功能
Jun 13 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
解决pyinstaller打包pyqt5的问题
Jan 08 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
tensorflow多维张量计算实例
Feb 11 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 Python
Python装饰器原理与基本用法分析
Jan 07 #Python
python保留小数位的三种实现方法
Jan 07 #Python
pytorch之ImageFolder使用详解
Jan 06 #Python
pytorch之inception_v3的实现案例
Jan 06 #Python
pytorch之添加BN的实现
Jan 06 #Python
PyTorch学习:动态图和静态图的例子
Jan 06 #Python
pytorch动态网络以及权重共享实例
Jan 06 #Python
You might like
php字符串截取问题
2006/11/28 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
分享JS数组求和与求最大值的方法
2016/08/11 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
NodeJS实现自定义流的方法
2018/08/01 NodeJs
elementUI多选框反选的实现代码
2019/04/03 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
python写日志封装类实例
2015/06/28 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
Python爬取成语接龙类网站
2018/10/19 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
高中生的学习总结自我鉴定
2013/10/26 职场文书
写好自荐信的几个要点
2013/12/26 职场文书
给实习单位的感谢信
2014/02/01 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
秋季校运动会广播稿
2014/02/23 职场文书
班长演讲稿范文
2014/04/24 职场文书
会计专业求职信范文
2015/03/19 职场文书
未婚证明格式
2015/06/15 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
React实现动效弹窗组件
2021/06/21 Javascript