博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础09_文件操作
阅读量:4343 次
发布时间:2019-06-07

本文共 2194 字,大约阅读时间需要 7 分钟。

一. 文件操作的基本流程

#1.打开文件,得到文件句柄并赋值给一个变量f1=open('b.txt','r',encoding='utf-8') #2.通过句柄对文件进行操作content=f1.read()print(content) #3. 关闭文件**一定要记得加上f1.close() 

说明: f1,文件句柄,文件对象.

open('文件路径'),默认打开方式r,默认打开编码是操作系统的默认编码:windows是gbk编码,linux和mac默认是utf-8

二.文件编码

三.文件打开模式

打开文件的模式有:

  • r , 只读模式,
  • w, 只写模式,【不可读,不存在则创建,存在则删除文件中的内容】
  • a, 追加模式,【不可读,不存在则创建,存在则只追加内容】

"+" 表示可以同时读写某个文件

  • r+
  • w+
  • a+

"b"表示处理二进制文件

  • rb
  • wb
  • ab

四.读取文件的方式

1.read

1) read当不传参数的时候,读取所有内容.注意:当文件比较大时,会占用很大的内存,不推荐使用.

2) 传参,如果是以r方式打开,参数指的是读取多少个字符

3) 传参,如果是以rb方式打开,传输指的是读取多少个字节.如网络传输\图片\视频常用rb模式.

假如有文件a.log,文件内容为

三月的天气四月的天气5月的天气6月的天气7月的天气

例子1:以r模式打开,read() 会读取文件所有的内容.

with open("a.log",encoding="utf-8",mode="r") as f:    content=f.read()    print(content)运行结果:三月的天气四月的天气5月的天气6月的天气7月的天气

 

例子2:以r模式打开,read(n),会读取n个字符

1 with open("a.log",encoding="utf-8",mode="r") as f:2     content=f.read(3)3     print(content)4 5 运行结果:6 三月的

例子3:以rb模式打开,read(n)会读取n个字节

1 with open("a.log",mode="rb") as f:2     content=f.read(3)3     print(content)4 运行结果:5 b'\xe4\xb8\x89'

 

2.readline

  一行一行读,每次读取一行,不会自动停止

3.for 循环

  一行一行读,从第一行开始每次读一行,督导没有之后就停止

4.readlines

 

五.写文件

write: 写内容,参数为字符串

writelines:写内容,参数为列表list

需要注意的问题:

1) w模式打开,写的是字符

2) wb模式打开,写的是字节

3) 写的过程中不会自动换行,需要自己添加换行符\n

例子:

1 with open(r"b.log",encoding="utf-8",mode="w") as f:2     f.write("假如生活欺骗了你")3     f.writelines(["假如生活欺骗了你\n","不要悲伤,不要心急\n","忧郁的日子里须要镇静\n","相信吧,快乐的日子将会来临!\n"])

写入文件的内容:

1 题目:假如生活欺骗了你2 假如生活欺骗了你3 不要悲伤,不要心急4 忧郁的日子里须要镇静5 相信吧,快乐的日子将会来临!

六.文件的修改

python修改文件的步骤

1)打开原文件,产生文件句柄 2)创建新文件,产生文件句柄 3)读取原文件,进行修改,写入新文件 4)将源文件删除 5)新文件重命名
1 import os2 with open("b.txt",encoding='utf-8',mode="r") as f1,3     open("b.txt_bak",encoding="utf-8",mode="w") as f2:4     for i in f1:5         new_content=i.replace("china","Chinese")6         f2.write(new_content)7     os.remove("b.txt")8     os.renames("b.txt_bak","b.txt")

 

七.文件中的指针

  • seek() : 用来指定当前指针的位置,指的是字节.注意在utf-8编码中,一个汉字占3个字节
  • tell() : 指出当前指针所在的位置

例子:

1 with open("a.log",encoding="utf-8",mode="r") as f: 2     f.seek(3) 3     content=f.read() 4     print(content) 5     print(f.tell()) 6 运行结果: 7 月的天气 8 四月的天气 9 5月的天气10 6月的天气11 7月的天气12 73

如果把该例子中的seek(3)改为seek(2),运行会报错,原因utf-8编码一个汉字占3个字节,如果把指针调到第2个字节,utf-8解码时会异常

 

 

转载于:https://www.cnblogs.com/yimiaoyikan/p/8847394.html

你可能感兴趣的文章
限制用户不能删除SharePoint列表中的条目(项目)
查看>>
feign调用spring clound eureka 注册中心服务
查看>>
ZT:Linux上安装JDK,最准确
查看>>
LimeJS指南3
查看>>
关于C++ const成员的一些细节
查看>>
《代码大全》学习摘要(五)软件构建中的设计(下)
查看>>
C#检测驱动是否安装的问题
查看>>
web-4. 装饰页面的图像
查看>>
微信测试账户
查看>>
Android ListView上拉获取下一页
查看>>
算法练习题
查看>>
学习使用Django一 安装虚拟环境
查看>>
Hibernate视频学习笔记(8)Lazy策略
查看>>
CSS3 结构性伪类选择器(1)
查看>>
IOS 杂笔-14(被人遗忘的owner)
查看>>
前端基础之BOM和DOM
查看>>
[T-ARA/筷子兄弟][Little Apple]
查看>>
编译Libgdiplus遇到的问题
查看>>
【NOIP 模拟赛】Evensgn 剪树枝 树形dp
查看>>
java学习笔记④MySql数据库--01/02 database table 数据的增删改
查看>>