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 相关文章推荐
Tensorflow环境搭建的方法步骤
Feb 07 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
实践Vim配置python开发环境
Jul 02 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
详解python之heapq模块及排序操作
Apr 04 Python
django基于存储在前端的token用户认证解析
Aug 06 Python
pytorch打印网络结构的实例
Aug 19 Python
Python如何使用turtle库绘制图形
Feb 26 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 Python
python查询MySQL将数据写入Excel
Oct 29 Python
深度学习小工程练习之垃圾分类详解
Apr 14 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 Mobile使用方法简明教程
2014/06/18 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
Jquery $when done then的用法详解
2016/05/20 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
js实现烟花特效
2020/03/02 Javascript
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python实现稀疏矩阵示例代码
2017/06/09 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
python奇偶行分开存储实现代码
2018/03/19 Python
Python封装原理与实现方法详解
2018/08/28 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
查询优化的一般准则有哪些
2015/03/08 面试题
超市采购员岗位职责
2014/02/01 职场文书
项目投资意向书
2014/04/01 职场文书
中学生寄语大全
2014/04/03 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
校本培训个人总结
2015/02/28 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书