Python入门基础: 文件和流

这篇博客详细介绍了Python中文件的打开、读写模式,包括'r'、'w'、'a'、'b'和'+'等模式的用法,以及缓冲区的概念。此外,还讲解了管道输出、文件位置的随机访问、按行读写文件的方法。同时,提到了文件迭代、懒惰行迭代以及文件对象的关闭方法,强调了使用try/finally或with语句确保文件正确关闭的重要性。
摘要由CSDN通过智能技术生成

1、打开文件

open(name[,mode[,buffering]])

open函数使用一个文件名作为其唯一的一个强制参数,然后返回一个文件对象。模式(mode)和缓冲区(buffering)是可选的。

模式:

‘r’  读模式

‘w’  写模式

‘a’  追加模式

‘b’ 二进制模式,添加到其他模式中使用

‘+’ 读/写模式,添加到其他模式中使用

'+'参数可以用来任何模式后,指明读和写都是可以的。'b’模式改变处理文件的方法。

二进制模式和文本模式的区别:在使用二进制模式时,python会原样地给出文件中的内容,但文本模式下则不一定。python会在文本模式下做一些转换:当在windows下用文本模式读取文件时,python会将\r\n转换成\n,相反,当在windows下用文本模式写文件时,会把\n转换成\r\n。

缓冲:

如果参数为0,I/O就是无缓冲,所有的读写操作直接针对硬盘。如果是1,I/O就用内存来代替硬盘,是程序更快,使用flush或close时才把内容写入硬盘。

2、读和写

f = open()

f.read(n) 读取n个字节

f.write(str)

f.close()

3、管式输出

使用管道可以在一个命令的后面续写其他多个命令,管道符号将一个命令的标准输出和下一个命令的标准输入连在一起。

$ cat test.txt | python somescript.py

文件流随机访问函数seek(offset),把当前位置移动到offset定义的位置。

4、读写行

file.readline(n)当n为空是,读取单独一行,并读取文件换行符,当n为非负值时读取文件的前n个字符。

file.readlines()读取一个文件中的所有行,并以列表的返回。

file.writeline()没有此函数。

file.wirtelines()将一个字符串列表写入到字符串文件中。

5、如果想确保文件被关闭了,那么应该使用try/finally语句,并且在finally字句中调用close()方法。

try:

file = open()

#操作文件

finaly:

file.close()

with语句可以打开文件并将其赋值到变量上:

with open() as somefile:

do_someting(somefile)

6、对文件内容进行迭代

6.1 按字节处理,在循环里做如下操作

f.read(1)

6.2 按行处理,在循环里做如下操作

f.readline()

6.3 处理整个文件

f.read() 将文件当做一个字符串来获取

f.readlines() 将文件读入到一个字符串列表

7、使用fileinput实现懒惰行迭代

懒惰行迭代的原因:在读取非常大的文件,readlines会占用太多的内存,而懒惰行迭代只是读取文件中实际需要的部分。

import fileinput

for line in fileinput.input(filename):

process(line)

8、文件迭代器

文件对象是可以按照行进行迭代的。

f = open(filename)

for line in f:

process(line)

f.close()

可以对文件迭代器执行和普通迭代器相同的操作:list(open(filename))

来源:https://www.weidianyuedu.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值