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 中__name__ = '__main__' 的作用
Jul 05 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
python实现画一颗树和一片森林
Jun 25 Python
python获取本机所有IP地址的方法
Dec 26 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
python中有关时间日期格式转换问题
Dec 25 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 Python
Python 如何反方向迭代一个序列
Jul 28 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
python爬取股票最新数据并用excel绘制树状图的示例
Mar 01 Python
Python 实现定积分与二重定积分的操作
May 26 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在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
PHP处理会话函数大总结
2015/08/05 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
PHP 裁剪图片
2021/03/09 PHP
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中list初始化方法示例
2016/09/18 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
Python高级用法总结
2018/05/26 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
详解【python】str与json类型转换
2019/04/29 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
大学生志愿者感言
2014/01/15 职场文书
婚礼主持词开场白
2014/03/13 职场文书
先进工作者申报材料
2014/12/23 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers