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 相关文章推荐
200行自定义python异步非阻塞Web框架
Mar 15 Python
python密码错误三次锁定(实例讲解)
Nov 14 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
Python中函数参数匹配模型详解
Jun 09 Python
django和vue实现数据交互的方法
Aug 21 Python
Python实现自动访问网页的例子
Feb 21 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
Django DRF认证组件流程实现原理详解
Aug 17 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
Python基于百度API识别并提取图片中文字
Jun 27 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
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
js模拟滚动条(横向竖向)
2013/02/22 Javascript
jQuery知识点整理
2015/01/30 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
webpack多页面开发实践
2017/12/18 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
跟老齐学Python之数据类型总结
2014/09/24 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
Python中文竖排显示的方法
2015/07/28 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python 字符串追加实例
2019/07/20 Python
Python reversed函数及使用方法解析
2020/03/17 Python
python实现批量修改文件名
2020/03/23 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
大学军训感言
2014/01/10 职场文书
向领导表决心的话
2014/03/11 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript