Python 从入门到实战28(文件的读操作)

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

        上篇文章我们讨论了文件的打开、创建、关闭的相关知识。今天我们将学习一下文件的读的相关操作知识。

1、读取文件read()方法

在python中通过打开文件后就可以读取文件内容了。

读取指定字符方法方法: file.read(size)

file----为打开的文件对象

size---为可选参数,用于指定要读取的字符个数,若是省略则一次性读取所有内容。

注意:调用read()方法读取文件内容的前提是,打开文件时,打开模式r或者r+。

举例说明:读取文件"test_data.txt"

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data = test_data_file.read()  #读取文件中全部内容
        print(test_data)

输出参考:

xiaomi,123456

xiaohua,135790

xiaohui,246810

另外,举例读取一部分字符:

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data = test_data_file.read(13)  #读取前13个字符
        print(test_data)

输出结果:

xiaomi,123456

2、seek()指定光标位置

上面我们使用read()方法读取文件,读取文件都是从开头开始读取的。如果我们想从某一位置开始读取要怎么实现呢?可以使用seek()方法将文件的指针移动到新的位置处。然后在使用read(size)方法读取文件。

seek()语法: file.seek(offset, [, whence])

参数说明:offset----表示要移动的字节数,可以为正数、负数或零。

whence(可选)----表示移动文件指针的参考位置,默认值为0。有三种取值:0:表示从文件开头开始计算偏移量。1:表示从当前位置开始计算偏移量。2:表示从文件末尾开始计算偏移量。

举例说明:

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data_file.seek(7)    #索引也是从0开始,7指第8个字符开始
        test_data = test_data_file.read(6)  #从第8个字符读取6个字符,即读取密码
        print(test_data)

参考下面的文档内容,

输出结果:123456

举例读取最后一组数据:

                                                                                                                                               

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data_file.seek(-12,2)    #移动到文件末尾向前第12位置
        test_data = test_data_file.read(12)  #读取12个字符,即读取最后一组数据
        print(test_data)

执行报错了,因为以r模式打开只支持从文件头开始计算相对位置。以rb方式才支持从文件末尾计算。

修改后查看:

def main():
    with open("test_data.txt", "rb") as test_data_file:
        test_data_file.seek(-14,2)    #移动到文件末尾向前第14位置
        test_data = test_data_file.read(14)  #读取14个字符,即读取最后一组数据
        print(test_data)

输出参考:正确输出最后一行数据,

3、readline()读取一行

在使用read()方法读取文件时,如果文件很大,一次性读取全部内容到内存,容易造成内存不足。如何解决这个问题呢?可以通过读取一行数据。

使用语法:file.readline() 

同样需要注意,使用此方法也要打开模式是r(只读)或者r+(读写)。

举例说明,如我们读取上面test_data.txt 按行输出,并加上序号。

参考代码:

def main():
    with open("test_data.txt", "r+") as test_data_file: #打开文件
        sequence_no = 0
        while True:
            sequence_no = sequence_no+1   #作为序号输出
            line = test_data_file.readline()  #读取一行数据
            if line == "":             #读取到文件末尾退出循环,即退出读取文件
                break
            print(sequence_no,"\t"+ line)  #打印序号和一行内容

输出结果:

1     xiaomi,123456

2     xiaohua,135790

3     xiaohui,246810

4、读取全部行readlines()

使用readlines()可以读取全部文件内容,此方法返回值是一个字符串列表。

使用语法:file.readlines() 

同样需要注意,使用此方法也要打开模式是r(只读)或者r+(读写)。

举例说明,如我们读取上面test_data.txt

def main():
    with open("test_data.txt", "r+") as test_data_file:  # 打开文件
        test_data = test_data_file.readlines() #读取全部内容
        print(test_data)

输出结果:

['xiaomi,123456\n', 'xiaohua,135790\n', 'xiaohui,246810']

若是想一行行的输出,也可以循环打印:

def main():
    with open("test_data.txt", "r+") as test_data_file:  # 打开文件
        test_data = test_data_file.readlines() #读取全部内容
        for line in test_data:
            print(line)

输出结果参考:

5、读取csv文件

数据为my_data,在CSV文件中存储的。

内容如下:

读取csv方法:导入csv模块>reader()读取>输出信息查看

#coding = utf-8

import  csv  #导入csv
def main():
    user_file = csv.reader(open('my_data.csv', 'r'))  # 打开文档并读取
    for line in user_file:  #按行输出
        print(line)

执行后输出结果参考:

['zhangsan', '123456']

['wangwu', '257890']

['liuliu', '358147']

今天先写学习到这里了,每天进步一点点。明天也要加油啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立黄昏粥可温

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值