python操作文本文件

本文目录

1打开与关闭文件

2读取文本行

3写文件

4统计词频程序

打开与关闭文件

在磁盘上读写文件之前,必须先打开这个文件。打开文件就需要提供文件的路径。

在与Python程序同一个目录下,我们有一个名为的文件,它的内容如下:

现在使用Python来打开和关闭它:

执行此程序不会有任何输出,这表示着打开和关闭文件都得到了正确执行。

可以看到,使用函数打开文件,参数为文件名(或文件路径);该函数会返回一个文件句柄,文件句柄并不会实际保存文件的内容,而是代表着一种操作,在上面的例子中,文件句柄被赋值给变量。

打开文件后,程序具有读(默认)该文件的权限。

最后,使用文件句柄的方法关闭文件。这非常重要,因为使用完而没有关闭的文件会占用内存或造成安全问题。

如果Python找不到该文件,则会返回错误,比如下面这样:

Python提示我们没有相应的文件或者目录: 'pii.txt'。

打开文件后就可以对文件进行操作:

方法将文件内容作为一个字符串返回。

文件中的每一行末尾使用换行符表示换行,例子中方法去掉文本中的换行符,然后输出。

程序的运行效果如下:

如果在文件关闭之前程序发生BUG意外退出,则文件不会关闭,为了避免此类事件的发生,可以使用语句:

语句的特点是即便在操作文件时发生错误,文件也会自动被清理。

读取文本行

虽然可以读取文本内容,但是当我们想要逐行处理文件内容,或者文件很大而无法一次性加载进内存的时候,就不适用了。

可以使用语句逐行处理文件内容:

本程序中将文件名保存在变量中。

打开文件后,使用语句按行读取文件内容。例子中,每次循环依次取一行文本以字符串的格式保存在变量中,每次循环中变量自增1。

这个程序的作用是,打开程序所在目录的文件,然后统计行数,并输出结果。

文件的内容是:

可以使用其他方法操作字符串:

程序将以开头的行打印出来。

写文件

打开文件后,默认的权限是读(r),如果要写文件,则需要使用写(w)或者追加(a)权限。

w权限,打开一个文件用于写入。如果该文件存在,则覆盖该文件;如果该文件不存在,则创建该文件。

a权限,打开一个文件用于追加。如果该文件存在,在文件末尾追加;如果该文件不存在,则创建该文件。

下面是一个使用w权限打开文件的例子:

例子中使用w权限打开该文件,并写入两行。(如果该文件存在,则内容会被覆盖)

不会自动添加换行符,所以如果需要换行,需在末尾添加。

统计词频程序

下面我们写一个统计文件中词频的程序。

它会统计文件中各个词的出现的次数,然后由高到低显示出前5个词。

首先我们完成打开和关闭文件的程序内容:

在例子中,由用户输入文件名,并且使用异常捕获以处理文件打开时的错误。

下面对内容进行统计:

这个程序:

首先创建一字典,存放单词和它出现的次数。

依次处理文件中的每一行。

使用方法去掉每行末尾的换行符。

使用方法将字符串按空白字符分割,并作为列表返回。这样列表保存了本行的单词,每个单词都是列表中的一个值。

对于单词列表,处理其中的每个单词。

如果单词作为键在字典中,则其值自增1.

如果单词作为键不在字典中,则为其值赋值1.

如此,我们就在字典中存放了的键值对。

由于字典不能保存顺序,所以不能对其进行排序。为此,将每个键值对都添加到一个列表中:

在列表中,每一项都是一个元组,每个元组第一个值是单词出现的次数,第二个值是单词内容。

对其进行逆向(由大到小)排序:

打印最终结果:

整个程序如下:

下面是程序运行结果的示例:

分类

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180322G08TA000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券