Python3 文件的各种操作
目录
一、文件的基本模式
读(r)
写(w)
追加(a)
读写(r+)
处理非文本(rb,wb,ab)
复制粘贴操作
二、文件方法
open()方法
with open()方法
四、文件常用的函数
file.write(str)——将字符串写入文件
file.read([size])——从文件读取指定的字节数,如果未给定或为负则读取所有内容
file.reandline()——一行一行的读取
file.close()——关闭文件
file.seek(偏移量,位置)——设置光标的位置
file.tell()——返回光标的位置
file.truncate([sieze])——截断文件
file.flush()——刷新文件内部缓冲
五、修改文件(*)
文件的修改步骤:
文件修改练习题
一、文件的基本模式
注:所有操作的文件都在项目中创建
读(r)
f=open("文件.txt",mode="r",encoding="UTF-8")
#s=f.read() #读文件里所有的内容
s=f.readline().strip() #一次读一行 行与行之间有两空行,用strip()去掉一行
print(s)
s=f.readline() #一次读一行
print(s)
f.close() #读取后关闭
文件是一个可迭代对象,可用for循环读取:
f=open("文件.txt",mode="r",encoding="UTF-8")
for line in f: #文件是一个可迭代对象print(line) #一行一行的处理数据(必须会写)
f.close()
用相对路径读取文件:
f=open("../day16/a.txt",mode="r",encoding="UTF-8")
s=f.read() #读文件里所有的内容
#print(s)
f.close() #读取后关闭
写(w)
注意:
- 在写操作时,都要手动控制换行,加换行符(\n),带w的第一次写时会清空文件原来的内容
- 如果文件不存在,会自动创建文件
f=open("nnnn",mode="w",encoding="utf-8")
#f.write("我\n")
#f.write("ai \n")
f.write("ni") #第一次写时会清除文件原来的内容
f.flush()
f.close()
追加(a)
a模式 :追加 append 不会清除之前文件里面的内容,追加在原来内容的后面
f=open("nnnn",mode="a",encoding="utf-8")
f.write("伊人")
f.write("在水一方")
f.flush()
f.close()
读写(r+)
注意:r+ 读写模式:先读后写,不论读取多少内容,光标在哪个位置,写入的时候都是在结尾写入,除非一开始就写入,这时在开头写入
f=open("nnnn",mode="r+",encoding="utf-8")
#(1)先读后写
s=f.read()
f.write("坚持")
f.write("就是胜利")
f.close()
处理非文本(rb,wb,ab)
处理图片、音频、视频等,如果mode有b,不能写encoding
复制粘贴操作
从D:/gr.jpg读取图片写入E:/gr.jpg
f=open("D:/gr.jpg",mode="rb")#这里不能写encoding
e=open("E:/gr.jpg",mode="wb")
for line in f: #从D:/gr.jpg读取图片e.write(line) #写入E:/gr.jpg
f.close()
e.flush()#刷新文件的内部缓冲
e.close()
二、文件方法
open()方法
语法:
open(文件名(路径),mode="?",encoding="UTF-8")
打开文件后需要关闭
文件路径:
1.绝对路径:从磁盘根目录开始;或者从互联网上拷贝一个路径
2.相对路径(用得比较多):相对于当前 ./当前 ../上一级目录
with open()方法
不需要关闭
四、文件常用的函数
file.write(str)——将字符串写入文件
file.read([size])——从文件读取指定的字节数,如果未给定或为负则读取所有内容
file.reandline()——一行一行的读取
file.close()——关闭文件
file.seek(偏移量,位置)——设置光标的位置
file.tell()——返回光标的位置
file.truncate([sieze])——截断文件
file.flush()——刷新文件内部缓冲
注意:
- file.truncate([sieze])——截断文件。从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。
- file.seek(偏移量,位置)——设置光标的位置
seek(0) 光标移动到开头
seek(0,2)光标移动到末尾,在末尾的偏移量是0
事例:
反复读取文件 就要用seek
f=open("nnnn",mode="r",encoding="utf-8")
for line in f:print(line.strip()) #读完后光标在末尾,再次for循环不会读f.seek(0) #移动光标到开头for line in f:print(line.strip())#不会读,将光标移到开头就可以读
f.close()
file.read([size])中size表示字节,3byte =>一个中文
f=open("nnnn",mode="r",encoding="utf-8")
f.seek(3) #3byte =>一个中文
s=f.read(1)#读取一个字符
print(s)
f.close()
tell 获取光标位置
f=open("nnnn",mode="w",encoding="utf-8")
f.write("娃哈哈啊娃哈哈")
f.seek(9) #3byte =>一个中文
print(f.tell())f.truncate(12) #如果给参数,从文件开头截断到参数位置 ;如果没参数,删掉光标后的所有内容
f.flush()
f.close()
五、修改文件(*)
文件的修改步骤:
- 引入os模块 os.remove(文件) ——删除文件 os.rename(文件)——重命名文件
- 打开目标文件 r
- 打开文件副本 w
- 从r中读取内容进行修改,写入到副本
- 删除源文件
- 重命名副本
文件修改练习题
(1)将文件“修改文件.txt”的a改为A.
分析:先读文件,然后用replace()完成替换,将修改后的存放在副本,再将之前的文件删掉,再重命名副本文件名
import os #引入os模块
with open("修改文件.txt",mode="r",encoding="utf-8")as f,\open("修改文件.txt_副本",mode="w",encoding="utf-8")as f1:
#将f修改后的存在副本f1for line in f:line=line.replace("a","A") #将a替换成Af1.write(line)#删除文件
os.remove("修改文件.txt")
os.rename("修改文件.txt_副本","修改文件.txt")
A 是第一个
A 是小写字母
A是英文字母
(2)将日志文件2019-05-17的内容转换成规定样式
1,abc,1001,特斯拉 2,bcd,1002,五菱宏光 3,def,1003,摩拜 4,ghj,1004,小黄车
[{id:1,name:abc,phone:1001,car:特斯拉}]
lst=[]
with open("2019-05-17", mode="r", encoding="utf-8") as f:for line in f:dic = {} # 每行一个字典# 1,abc,1001,特斯拉ls= line.strip().split(",") # 逗号切割dic['id'] = ls[0]dic['name'] = ls[1]dic['phone'] = ls[2]dic['car'] = ls[3]#print(dic) # strip()去掉空白lst.append(dic)print(lst)
结果:
[{'id': '1', 'phone': '1001', 'name': 'abc', 'car': '特斯拉'}, {'id': '2', 'phone': '1002', 'name': 'bcd', 'car': '五菱宏光'}, {'id': '3', 'phone': '1003', 'name': 'def', 'car': '摩拜'}, {'id': '4', 'phone': '1004', 'name': 'ghj', 'car': '小黄车'}]
方法二:
lst=[]
lst1=['id', 'name', 'phone', 'car']
with open("2019-05-17", mode="r", encoding="utf-8") as f:for line in f:dic = {} # 每行一个字典# 1,abc,1001,特斯拉ls= line.strip().split(",") # 逗号切割for i in range(len(ls)):dic[lst1[i]]=ls[i]lst.append(dic)print(lst)
举一反三:当行列不断增加,又该怎么做?
例:
id,name,phone,car,home,salary 1,abc,1001,特斯拉,四川,100000 2,bcd,1002,五菱宏光,重庆,20000 3,def,1003,摩拜,广州,30000 4,ghj,1004,小黄车,深圳,40000
lst=[]
with open("2019-05-18", mode="r", encoding="utf-8") as f:first=f.readline().strip().split(",") #读取第一行#print(first) #['id', 'name', 'phone', 'car', 'home', 'salary']for line in f:dic = {} # 每行一个字典# 1,abc,1001,特斯拉ls = line.strip().split(",") # 逗号切割for i in range(len(first)):dic[first[i]] = ls[i] #规律:每行的切片后索引相同lst.append(dic)print(lst)
结果:
[{'car': '特斯拉', 'phone': '1001', 'id': '1', 'name': 'abc', 'home': '四川', 'salary': '100000'}, {'car': '五菱宏光', 'phone': '1002', 'id': '2', 'name': 'bcd', 'home': '重庆', 'salary': '20000'}, {'car': '摩拜', 'phone': '1003', 'id': '3', 'name': 'def', 'home': '广州', 'salary': '30000'}, {'car': '小黄车', 'phone': '1004', 'id': '4', 'name': 'ghj', 'home': '深圳', 'salary': '40000'}]
Python3 文件的各种操作相关推荐
- Python3 文件操作
Python3 文件操作 讲师:张学亮 百度:学亮编程手记 网易云课堂:@张学亮 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到 ...
- python从入门到大神---4、python3文件操作最最最最简单实例
python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...
- python3 读取文本文件_python3文件的读写操作
open函数:对文件进行读写操作前,先打开文件,获取文件的句柄: open(file, mode, encoding, buffering) 参数说明 file_name:一个包含了你要访问的文件路径 ...
- python输入文件名读取文件_[Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等...
1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...
- python操作目录_详解python中的文件与目录操作
详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...
- python创建文件os_Python之文件与目录操作(os、zipfile、tarfile、shutil)
Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模块 ...
- python对文件的读操作有哪些方法-Python之文件操作:文件的读写
一.open函数:对文件读写之前,需要先打开文件,获取文件句柄 注意:open() file() 尽量使用open(),Python3以后不支持file()了 1.open(file_name[,ac ...
- Python办公自动化,对文件进行自由操作
日常对于批量处理文件的需求非常多,用Python写脚本可以非常方便地实现,但在这过程中难免会和文件打交道,第一次做会有很多文件的操作无从下手,只能找度娘. 本篇整理了10个Python中最常用到的文件 ...
- cmd中如何运行python文件_在cmd中运行.py文件: python的操作步骤
在cmd中运行.py文件: python的操作步骤 1 打开cmd, 不改变运行的目录: 输入python 空格 调试好的python文件路径 或者python 空格 将python文件拖入cmd ...
- python中和操作目录相关的函数包括_python文件和目录操作函数小结
<python 与数据挖掘 > 一 导读 前 言为什么要写本书?Python是什么? Python是一种带有动态语义的.解释性的.面向对象的高级编程语言.其高级内置数据结构,结合动态类型和 ...
最新文章
- Set 的合集 并集 差集
- sublime text3函数追踪:ctags配置
- lock object oracle,oracle lock 08 - 关于锁的解决方案
- 618 兵临城下,你需要一个更省钱省力的数据根基平台!
- web service notes
- java中文乱码问题的原因是什么?怎么解决中文乱码问题?
- AOM Summit:拥抱开源,引领新技术创新
- 前端学习(1964)vue之电商管理系统电商系统之渲染分类参数的tab页标签
- 矩阵连乘问题(c++)
- lnmp解析php,LNMP之 php解析
- 【spingboot基础知识】相关问题汇总
- 在RedHat下安装MPlayer
- mysql处理sql时间格式_mysql 处理日期格式
- testng数据驱动_TestNG数据提供者
- 三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
- 大文件读取mmap磁盘映射
- 手机客户端接口开发文档模板整理
- 网络视频流 -- ffmpeg 推流
- LintCode 842: Origami
- 英伟达显卡老版本驱动下载网址
热门文章
- CAXA2007、2011,2013二次开发
- 创业与投资 - 谈谈融资这个事儿(上)
- VMware Tools安装步骤(windows10)
- 百度地图瓦片下载工具(仅供学习)
- flash 游戏开发工作总结(1)--开发准备:FB的配置
- 以pdf转cad为例,所有格式之间任意转换
- (概率论习题册题解)第二章 随机变量及其分布
- 下载 MIUI任意型号卡刷包/线刷包
- vivo的Android升级包,【原厂固件】vivo y66ia系统升级rom刷机包_卡刷包_PD1621B_A_1.9.6...
- sonar pmd\p3c插件源码初步解析