浅谈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实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
使用python加密自己的密码
Aug 04 Python
分享一个简单的python读写文件脚本
Nov 25 Python
matplotlib绘制动画代码示例
Jan 02 Python
numpy中的高维数组转置实例
Apr 17 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
Python生成一个迭代器的实操方法
Jun 18 Python
在Python中获取操作系统的进程信息
Aug 27 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
详解Pycharm与anaconda安装配置指南
Aug 25 Python
python 实现简单的计算器(gui界面)
Nov 11 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
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
vue实现微信分享功能
2018/11/28 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
python通过smpt发送邮件的方法
2015/04/30 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
详解Python学习之安装pandas
2019/04/16 Python
python3中property使用方法详解
2019/04/23 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
网络体系结构及协议的定义
2014/03/13 面试题
写演讲稿要注意的六件事
2014/01/14 职场文书
成语的广告词
2014/03/19 职场文书
出国签证在职证明
2014/09/20 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
超市工作总结范文2014
2014/12/19 职场文书
年终工作总结范文
2019/06/20 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python