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 相关文章推荐
Python collections模块实例讲解
Apr 07 Python
Python中计算三角函数之cos()方法的使用简介
May 15 Python
python中argparse模块用法实例详解
Jun 03 Python
python中正则的使用指南
Dec 04 Python
老生常谈Python序列化和反序列化
Jun 28 Python
Python 从相对路径下import的方法
Dec 04 Python
Python 获取主机ip与hostname的方法
Dec 17 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
Python二进制文件读取并转换为浮点数详解
Jun 25 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
python实现代码统计程序
Sep 19 Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 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文件上传原理简单分析
2011/05/29 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
php实现递归的三种基本方式
2020/07/04 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
js下拉菜单语言选项简单实现
2013/09/23 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
解决uWSGI的编码问题详解
2017/03/24 Python
Python实现文件内容批量追加的方法示例
2017/08/29 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
怎样声明子类
2013/07/02 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
班长竞选演讲稿
2014/04/24 职场文书
军训拉歌口号
2014/06/13 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
学校学期工作总结
2015/08/13 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
MySQL中一条update语句是如何执行的
2022/03/16 MySQL