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实现bucket排序算法实例分析
May 04 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
简单了解Python中的几种函数
Nov 03 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
python编写简单端口扫描器
Sep 04 Python
基于python判断目录或者文件代码实例
Nov 29 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
python实现暗通道去雾算法的示例
Sep 27 Python
python基础之函数的定义和调用
Oct 24 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
星际RPG字典
2020/03/04 星际争霸
php命令行用法入门实例教程
2014/10/27 PHP
php生成图片缩略图的方法
2015/04/07 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP时间处理类操作示例
2018/09/05 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
JMenuTab简单使用说明
2008/03/13 Javascript
js获取提交的字符串的字节数
2009/02/09 Javascript
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
js中的string.format函数代码
2020/08/11 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
浅述python中argsort()函数的实例用法
2017/03/30 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
python决策树之CART分类回归树详解
2017/12/20 Python
实践Vim配置python开发环境
2018/07/02 Python
pytorch 数据集图片显示方法
2018/07/26 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
django解决订单并发问题【推荐】
2019/07/31 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
高中军训第一天感言
2014/03/06 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
婚礼主持结束词
2014/03/13 职场文书
出国留学担保书
2014/05/20 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL