Python学习大数据 爬虫Python AI Sql

带你学python基础:文件读写,俗称IO操作

2019-03-01  本文已影响2人  程序员欧阳

这一节讲个挺有意思的知识,至少在我以前刚刚接触编程的时候,对于文件操作还是觉得很有意思的事情,这也许是有一种操作文件的激情吧,希望看到这篇文章的读者也会有这样的激情,说明还是很有兴趣的,当然,就算没有,可能是你的兴趣点不在这。

一、文件的打开

首先,我们还是从文件的打开与关闭讲起。讲这个之前,我们先了解一下文件操作的大致流程,这个流程不止 Python 是这样的,几乎所有的编程语言的操作都是这样的,有了这样的一个流程,再写程序的时候,思路就豁然开朗了。


从这个图我们可以看出,文件操作一般会经历打开文件、读写数据、关闭文件,这样的大概的流程,所以,下面的知识,我们就按照这个流程一一讲解涉及的知识点。

一提到文件打开,我们就会想到 open() 这个函数,打铁趁热,我们就将一下这个函数的用法。

open()

函数语法

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

参数解释

实践是检验真理的唯一标准

# -*- coding:utf-8 -*-
# 新建打开文件操作,打开文件hello.txt,以读取的模式打开
f = open('./hello.txt', 'r')

是不是易如反掌,这里只是打开了这个文件,还没有进行任何的操作,文件操作待我娓娓道来,这个实例中用到了文件读取的模式,介绍一下常用的模式。

注意:对于初学者来说,需要注意的是,模式b的意思是代表二进制读写+直接代表读写,也就是有读取和写入两个操作。也许你不理解什么是二进制读写,这里讲一下,数据的保存是有文本字符保存和二进制保存的,所以,在读写的时候,自然也就有两种读写方式了。具体的可以查查资料,学过 C 或者 C++ 就很清楚了。

高级的打开open

这里为什么说高级的打开呢?

在前面说到的文件操作流程中,是不是不可避免的都需要自己去执行关闭文件操作呢?其实不是的,在 Python 中提供了一种更加方便的形式,不需要手动的去关闭文件。

语法

with…open

实践是检验真理的唯一标准

with open('./hello.txt', 'r') as f:
    print(f)

注意:这里的as和前面提到过的as是异曲同工的,都是起到别名的作用。

至于为什么需要这种写法,就是可以避免每次需要手动关闭文件,这种方式会在需要的时候自动关闭。

二、文件的操作

文件操作流程第一步文件打开相信理解透彻了,接下来就是重头戏文件的操作了。

文件读取

read()方法

read的使用方法异常简单

read(num)

read()可以读取文件里面的内容。num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

实践是检验真理的唯一标准
这里接着上面打开的流程接着写程序。

with open('./hello.txt', 'r') as f:
    # 如果不写入参数,代表读取全部内容
    str = f.read()
    print(str)
    print('*' * 10)
    # 读取4字节
    str2 = f.read(4)
    print(str2)

哪还有其他的读取方式吗?

readline()/readlines()

实践是检验真理的唯一标准

# 使用readlines
with open('./hello.txt', 'r') as f:
    content = f.readlines()
    print('类型:', type(content))

    for i in content:
        print(i)

print('*' * 20)

# 使用readline
with open('./hello.txt', 'r') as f:
    content = f.readline()
    print('类型:', type(content))

    for i in content:
        print(i)

文件写入

write()方法和writelines(seq)方法

这两个方式都是用于文件写入的。需要注意的是,他们写完后在文件末尾都不会写入换行符。

# 文件写入
with open('./hello.txt', 'a') as f:
    f.write('12345617777')
    f.writelines('I love you ! ')

print('*' * 20)

# 使用readlines读取
with open('./hello.txt', 'r') as f:
    content = f.readlines()
    for i in content:
        print(i)

可见不会自动加入换行符!

其他实用操作

在某些场景下,可能我们需要更加方便的处理文件,例如,当我们读取文件一半的时候,我们需要读文件的后面具体的某些内容,这时候,我们就需要移动文件的指针来读取了。当然,都不用担心,python 都提供了这些方法,下面就讲解这些方法。

这里需要介绍几个方法。

实践是检验真理的唯一标准

例如,我们不从文件开头读取,从10个文字后开始读取

with open('./hello.txt', 'r') as f:
    f.seek(10, 0)
    print('当前位置:', f.tell())
    content = f.read()
    print(content)

最后再讲两个函数。

三、文件关闭

文件关闭是指,在文件操作完成之后,需要关闭。其实,看完前面的内容,文件关闭似乎不太重要了。那么如何使用呢,非常简单。

文件对象.close()
# 新建打开文件操作,打开文件hello.txt,以读取的模式打开
f = open('./hello.txt', 'r')
f.close()

文件操作的内容就这么多了!!!over!

上一篇下一篇

猜你喜欢

热点阅读