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使用py2exe打包程序介绍
Nov 20 Python
Python中operator模块的操作符使用示例总结
Jun 28 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
python实现可逆简单的加密算法
Mar 22 Python
python3对接mysql数据库实例详解
Apr 30 Python
Tensorflow模型实现预测或识别单张图片
Jul 19 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
使用scrapy实现增量式爬取方式
Jun 21 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过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
php session的锁和并发
2016/01/22 PHP
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
node.js入门教程
2014/06/01 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
Swift中的协议(protocol)学习教程
2016/07/08 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
利用python爬取散文网的文章实例教程
2017/06/18 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
python装饰器常见使用方法分析
2019/06/26 Python
Python实现打印实心和空心菱形
2019/11/23 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
pytorch数据预处理错误的解决
2020/02/20 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
营销与策划应届生求职信
2013/11/04 职场文书
商业融资计划书
2014/04/29 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
2014企业年终工作总结
2014/12/23 职场文书
酒店前台辞职书
2015/02/26 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript