Python之文件操作

本文深入讲解Python中文件的打开、读写操作,包括文本文件与非纯文本文件的处理方式,以及如何使用上下文管理器简化文件操作流程。通过实例演示,读者将掌握不同模式下文件的操作技巧。

1.打开文件

打开文件的三步:打开 --> 操作 --> 关闭

f = open(’/tmp/passwdd’,‘w’) ##打开文件
content = f.read() ##操作
f.close() ##关闭文件

#打开文件
f = open('/tmp/passwdd','w')

#读操作
# content = f.read()
# print(content)
# print(f.writable())
# print(f.readable())

#写操作
f.write('hello')

#关闭
f.close()

在这里插入图片描述

2.文件的读写(文本文件)

操作符功能
r:默认只能读不能写读取的文件不存在会报错
r+可以执行读写操作,文件不存在会报错,默认情况下从文件指针所在位置开始写入
w:write only会清空文件之前的内容,文件不存在不会报错,会创建新的文件并写入
w+可读可写,会清空源文件内容,文件不存在时不会报错,会建立文件并写入
a:write only不会清空文件内容,文件不存在会建立文件
a+可读可写,不会清空原来的内容,在原文件末尾追加,文件不存在会自动建立并写入

例:

f = open('/mnt/passwd','r+')			

print(f.tell())			###查看当前指针所在的位置
f.write('python')		##写入

print(f.tell())			###查看当前指针所在的位置
content = f.read()
print(content)			##读操作

f.close()

运行:你可能会遇到下面的报错——这是因为文件的权限不够

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实验:

<1>r:可读不可写

在这里插入图片描述

<2>r+:可读可写

在这里插入图片描述

在这里插入图片描述

<3>w:可写,会清空文件之前的内容,文件不存在不会报错,会创建新的文件并写入

在这里插入图片描述

当我们使用w时,文件不存在,竟然报错了,不是说文件不存在时会自行建立并写入吗?仔细查看报错我们发现,它告诉我们权限不够,好的,文件不存在那么权限也无从谈起,我们试试更改/mnt的权限

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.文件指针与读取操作

为了方便理解,我们先准备下面的文件/mnt/test(权限加满):

在这里插入图片描述

文件指针

seek方法,移动指针
seek的第一个参数是偏移量:>0,表示向右移动,<0表示向左移动
seek的第二个参数是:
0:移动指针到文件开头
1:不移动指针
2:移动指针到末尾

文件读取操作

  • f = open(’/mnt/test’,‘rb’)
  • read() ------>读取文件内容,并将内容一行输出
  • readilne()------>读取文件内容,写入几行readilne(),输出几行
  • readlines()------>读取文件内容,返回一个列表,列表的元素分别是文件内行的内容

(1)readlines():读取文件内容,返回一个列表,列表的元素分别为文件
行内容
(2)默认情况下读取文件的所有内容,小文件可以直接用read读取,如果
是大文件(文件大小>内存大小),不能通过read一次性读取所有内容

操作演示:

1)查看当前指针所在的位置f.tell()------->‘hello’ 共5个字节,‘a+’ 是在文件末尾操作,末尾指针118+5=123
在这里插入图片描述

2)区别使用read,readline,readlines

read:读取文件内容,并将内容一行输出
在这里插入图片描述

read:取出文件的前四个字符(相当于head -c 4)
在这里插入图片描述

readline:读取文件内容,写入几行readilne(),输出几行

在这里插入图片描述
在这里插入图片描述

readlines:读取文件内容,返回一个列表,列表的元素分别是文件内行的内容

在这里插入图片描述

去掉文件每一行的空格(strip 取出广义的空格,\n \t 都属于广义的空格)

在这里插入图片描述

3)文件指针seek方法的使用

在这里插入图片描述

4.非纯文本文件读取

文件类型相关查看方法
读取文本文件r r+ w w+ a a+
读取二进制文件rb rb+ wb wb+ ab ab+

示例:

我们试试读取下面的二维码
在这里插入图片描述

在这里插入图片描述

当然我们也可以复制这个二维码------->生成了111.jpg,与源文件相同

在这里插入图片描述

5.上下文管理器

有时候打开文件忘记关闭,可以用以下方法解决
不用写f.close()

简单的即条命令生成了和/etc/passwd相同的文件

在这里插入图片描述

练习题:

创建文件data.txt,文件共100000行,每行存放一个1~100之间的整数

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值