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中由于logging模块误用导致的内存泄露
Apr 23 Python
python实现给数组按片赋值的方法
Jul 28 Python
Python出现segfault错误解决方法
Apr 16 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
python构建深度神经网络(DNN)
Mar 10 Python
pandas中去除指定字符的实例
May 18 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
Python实现Singleton模式的方式详解
Aug 08 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 Python
Python拼接字符串的7种方式详解
Mar 19 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
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
php中的ini配置原理详解
2014/10/14 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
PHP实现微信提现功能
2018/09/30 PHP
学习ExtJS accordion布局
2009/10/08 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
python 调用有道api接口的方法
2019/01/03 Python
python实现狄克斯特拉算法
2019/01/17 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
Django中Middleware中的函数详解
2019/07/18 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
Python csv模块使用方法代码实例
2019/08/29 Python
Python笔记之facade模式
2019/11/20 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
详解python itertools功能
2020/02/07 Python
利用python绘制正态分布曲线
2021/01/04 Python
教师实习自我鉴定
2013/12/18 职场文书
房地产广告词大全
2014/03/19 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python