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 相关文章推荐
使用cx_freeze把python打包exe示例
Jan 24 Python
Python中统计函数运行耗时的方法
May 05 Python
python监控键盘输入实例代码
Feb 09 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
Python爬虫 批量爬取下载抖音视频代码实例
Aug 16 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
关于Numpy中的行向量和列向量详解
Nov 30 Python
python__new__内置静态方法使用解析
Jan 07 Python
Python 实现进度条的六种方式
Jan 06 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 Python
Python尝试实现蒙特卡罗模拟期权定价
Apr 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
PHP网站提速三大“软”招
2006/10/09 PHP
模仿OSO的论坛(一)
2006/10/09 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
分享10段PHP常用代码
2015/11/11 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
vc6编写python扩展的方法分享
2014/01/17 Python
python有证书的加密解密实现方法
2014/11/19 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
python读取指定字节长度的文本方法
2019/08/27 Python
详解python tcp编程
2020/08/24 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
日语求职信范文
2013/12/17 职场文书
党员入党表决心的话
2014/03/11 职场文书
英语课外活动总结
2014/08/27 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2014年销售员工作总结
2014/12/01 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript