浅谈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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
Python FTP操作类代码分享
May 13 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
Python Grid使用和布局详解
Jun 30 Python
python 借助numpy保存数据为csv格式的实现方法
Jul 04 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
python实现手势识别的示例(入门)
Apr 15 Python
Python中else的三种使用场景
Jun 16 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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图片上传程序
2008/03/27 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
php命名空间学习详解
2014/02/27 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
Scrapy框架使用的基本知识
2018/10/21 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
用python制作个视频下载器
2021/02/01 Python
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
某科技软件测试面试题
2013/05/19 面试题
人事档案接收函
2014/01/12 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP