浅谈PYTHON 关于文件的操作


Posted in Python onMarch 19, 2019

1.打开文件:

f=open(r'E:\PythonProjects\test7\a.txt',mode='rt',encoding='utf-8')
以上三个单引号内分别表示:要打开的文件的路径,mode为文件打开方式具体介绍在下文,encoding为文件的字符编码,一般默认为utf-8

2.读写文件:

data=f.read()  # 读文件

f.write()    # 写文件

3.关闭文件:

f.close()

4.为了简便,一般采用上下文的方法进行文件操作,可不用关闭文件

with open('a.txt',mode='rt',encoding='utf-8') as f:
data=f.read()
 print(data)
with open('a.txt',mode='wt',encoding='utf-8') as f:
 f.write('hello world')

5.控制文件读写的操作:

r:(默认模式):只读:以该模式打开文件时,若文件不存在则报错,若文件存在,则文件指针在文件开头,即从文件开头开始读文件
w:只写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则清空文件内容,文件指针移到开头
a:追加写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则将文件指针移到文件末尾,在文件末尾写入新的内容

6.控制文件读写内容的模式:(t 和 b都不能单独使用,必须与r,w,a结合使用)

t:(默认):无论读写都是以字符为单位,只能识别文本文件,必须要制定encoding
b:无论读写都是以字节为单位,可以识别所有文件,一定不能指定encoding

7.文件的拷贝

with open ('a.txt',mode='rb') as af,\
 open('b.txt',mode='wb') as bf:
 data=af.read
 f.write(data)

执行程序后,打开文件,即可发现文件已成功拷贝,这里使用 b 而不是用 t 模式,是因为文件有多种格式

8.文件的修改:

文件的修改是在硬盘上实现文件的覆盖,相当于一个新的文件以旧的文件名来命名的; 文件的修改有俩种方式,分别适用于不同的情景

方式一(适用于容量小的文件):这种方式的原理是:创建一个新的文件,将旧文件的内容拷贝到新的文件中;这样内存里就存在俩个文件,故不适用于容量大的文件,具体代码见下方 View

with open('a.txt',mode='rt',encoding='utf-8') as f:
 data=f.read()
 data_new=data.replace('yang', 'yv')
with open('b.txt',mode='wt',encoding='utf-8')as p:
 p.write(data_new)

方式二(适用于容量大的文件):此方式的原理为:读取旧文件的一行内容,修改后写到临时文件中,循环往复直到写完,然后将源文件删除,将临时文件命名为源文件名.这种方式在内存中只存在2行文件,节省内存,可用于大文件

import os
with open('b.txt',mode='rt',encoding='utf-8') as f,\
 open('.b.txt.swap',mode='wt',encoding='utf-8') as p:
 for line in f:
 p.write(line.replace('yv','yang')) 
 # 调用replace方法,将源文件中的'yv',换成'yang'
os.remove('b.txt')
os.rename('.b.txt.swap','b.txt')

9. 文件的阶段:truncate(n)

将文件中n个字节后内容全删了,当 n 不存在时,即删除文件全部内容

10.文件内指针的移动

f.seek():  指针的移动是以字节为单位的
seek 有三种模式:

0:(默认模式) 指针在文件开头,只有在 0 模式可以在 t 模式下用,也可以在 b 模式下用,而 1 ,2 模式只能在 b 模式下使用
1:指针在当前位置
2:指针在文件末尾

以下为具体事例:

# 0
with open('a.txt',mode='rt',encoding='utf-8')as f:
 f.seek(3,0)
 print(f.tell()) # 指针当前位置
 print(f.read()) # 从指针后读出所有内容

# 1 参照指针当前位置
 with open('a.txt',mode='rb')as f:
 f.read(2)
 f.seek(4,1)
 print(f.tell())
 print(f.read().decode('utf-8'))

# 2 参照文件末尾
 with open('a.txt',mode='rb')as f:
 f.seek(-5,2)
 print(f.tell())
 print(f.read().decode('utf-8'))

当 seek处于 2 模式时,可以将文件中新加入的内容打印出来,具体代码如下:

# 另一个文件进行写操作,写的代码如下:

with open('a.txt',mode='at',encoding='utf-8')as f:
 f.write('hello world\n')


# 每在文件中写入新的内容,都打印出来,以下代码执行打印操作:
import time
with open('a.txt',mode='rb')as f:
 f.seek(0,2)
 while True:
 line=f.readline() # readline 可以读取没有内容的部分
 # print(line.decode('utf-8'))
 if len(line)==0:
 time.sleep(0.1)
 else:
 print(line.decode('utf-8'))

以上所述是小编给大家介绍的PYTHON 关于文件的操作详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python中lambda与def用法对比实例分析
Apr 30 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
简单实现Python爬取网络图片
Apr 01 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
django认证系统 Authentication使用详解
Jul 22 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
Python模块常用四种安装方式
Oct 20 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
python scatter散点图用循环分类法加图例
Mar 19 #Python
python使用matplotlib画柱状图、散点图
Mar 18 #Python
matplotlib实现区域颜色填充
Mar 18 #Python
Python函数定义及传参方式详解(4种)
Mar 18 #Python
Python中super函数用法实例分析
Mar 18 #Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 #Python
python+pyqt5编写md5生成器
Mar 18 #Python
You might like
IStream与TStream之间的相互转换
2008/08/01 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
PHP可变函数的使用详解
2013/06/14 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
js的touch事件的实际引用
2014/10/13 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
微信小程序 如何保持登录状态
2019/08/16 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python对象及面向对象技术详解
2016/07/19 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
饲料采购员岗位职责
2013/12/19 职场文书
学生自我评价范文
2014/02/02 职场文书
安全生产先进个人材料
2014/02/06 职场文书
大学生演讲稿
2014/04/25 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
债务纠纷委托书
2014/08/30 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
工作失误检讨书
2015/01/26 职场文书
Python语言内置数据类型
2022/02/24 Python