目录

一、文件的基本模式

读(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()方法

不需要关闭

四、文件常用的函数

  1. file.write(str)——将字符串写入文件

  2. file.read([size])——从文件读取指定的字节数,如果未给定或为负则读取所有内容

  3. file.reandline()——一行一行的读取

  4. file.close()——关闭文件

  5. file.seek(偏移量,位置)——设置光标的位置

  6. file.tell()——返回光标的位置

  7. file.truncate([sieze])——截断文件

  8. 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()

五、修改文件(*)

文件的修改步骤:

  1. 引入os模块      os.remove(文件) ——删除文件          os.rename(文件)——重命名文件
  2. 打开目标文件 r
  3. 打开文件副本 w
  4. 从r中读取内容进行修改,写入到副本
  5. 删除源文件
  6. 重命名副本

文件修改练习题

(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 文件的各种操作相关推荐

  1. Python3 文件操作

    Python3 文件操作 讲师:张学亮 百度:学亮编程手记 网易云课堂:@张学亮 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到 ...

  2. python从入门到大神---4、python3文件操作最最最最简单实例

    python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...

  3. python3 读取文本文件_python3文件的读写操作

    open函数:对文件进行读写操作前,先打开文件,获取文件的句柄: open(file, mode, encoding, buffering) 参数说明 file_name:一个包含了你要访问的文件路径 ...

  4. python输入文件名读取文件_[Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等...

    1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...

  5. python操作目录_详解python中的文件与目录操作

    详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...

  6. python创建文件os_Python之文件与目录操作(os、zipfile、tarfile、shutil)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模块 ...

  7. python对文件的读操作有哪些方法-Python之文件操作:文件的读写

    一.open函数:对文件读写之前,需要先打开文件,获取文件句柄 注意:open() file() 尽量使用open(),Python3以后不支持file()了 1.open(file_name[,ac ...

  8. Python办公自动化,对文件进行自由操作

    日常对于批量处理文件的需求非常多,用Python写脚本可以非常方便地实现,但在这过程中难免会和文件打交道,第一次做会有很多文件的操作无从下手,只能找度娘. 本篇整理了10个Python中最常用到的文件 ...

  9. cmd中如何运行python文件_在cmd中运行.py文件: python的操作步骤

    在cmd中运行.py文件: python的操作步骤 1 打开cmd, 不改变运行的目录: 输入python 空格  调试好的python文件路径 或者python 空格  将python文件拖入cmd ...

  10. python中和操作目录相关的函数包括_python文件和目录操作函数小结

    <python 与数据挖掘 > 一 导读 前 言为什么要写本书?Python是什么? Python是一种带有动态语义的.解释性的.面向对象的高级编程语言.其高级内置数据结构,结合动态类型和 ...

最新文章

  1. Set 的合集 并集 差集
  2. sublime text3函数追踪:ctags配置
  3. lock object oracle,oracle lock 08 - 关于锁的解决方案
  4. 618 兵临城下,你需要一个更省钱省力的数据根基平台!
  5. web service notes
  6. java中文乱码问题的原因是什么?怎么解决中文乱码问题?
  7. AOM Summit:拥抱开源,引领新技术创新
  8. 前端学习(1964)vue之电商管理系统电商系统之渲染分类参数的tab页标签
  9. 矩阵连乘问题(c++)
  10. lnmp解析php,LNMP之 php解析
  11. 【spingboot基础知识】相关问题汇总
  12. 在RedHat下安装MPlayer
  13. mysql处理sql时间格式_mysql 处理日期格式
  14. testng数据驱动_TestNG数据提供者
  15. 三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
  16. 大文件读取mmap磁盘映射
  17. 手机客户端接口开发文档模板整理
  18. 网络视频流 -- ffmpeg 推流
  19. LintCode 842: Origami
  20. 英伟达显卡老版本驱动下载网址

热门文章

  1. CAXA2007、2011,2013二次开发
  2. 创业与投资 - 谈谈融资这个事儿(上)
  3. VMware Tools安装步骤(windows10)
  4. 百度地图瓦片下载工具(仅供学习)
  5. flash 游戏开发工作总结(1)--开发准备:FB的配置
  6. 以pdf转cad为例,所有格式之间任意转换
  7. (概率论习题册题解)第二章 随机变量及其分布
  8. 下载 MIUI任意型号卡刷包/线刷包
  9. vivo的Android升级包,【原厂固件】vivo y66ia系统升级rom刷机包_卡刷包_PD1621B_A_1.9.6...
  10. sonar pmd\p3c插件源码初步解析