TXT文本文件存储

📋 个人简介
💖 作者简介:大家好,我是W_chuanqi,一个编程爱好者
📙 个人主页:W_chaunqi
😀 支持我:点赞👍+收藏⭐️+留言📝
💬 愿你我共勉:“若身在泥潭,心也在泥潭,则满眼望去均是泥潭;若身在泥潭,而心系鲲鹏,则能见九万里天地。”✨✨✨

文章目录

  • TXT 文本文件存储
    • 1.实例引入
    • 2.打开方式
    • 3.简化写法

TXT 文本文件存储

​ 将数据保存为TXT文本的操作非常简单,而且TXT文本几乎兼容任何平台,但是这也有个缺点,就是不利于检索。所以如果对检索和数据结构的要求不高,追求方便第一的话,就可以采用 TXT本存储。

​ 我们接下来看一下利用 Python 保存 TXT 文本文件的方法。

1.实例引入

​ 我们以电影实例网站 https://ssr1.scrape.center/ 为例,爬取首页 10部电影的数据,然后将相关信息存储为 TXT 文本格式。

​ 实例代码如下:

import requests
from pyquery import PyQuery as pq
import reurl = 'https://ssr1.scrape.center/'
html = requests.get(url).text
doc = pq(html)
items = doc('.el-card').items()
file = open('movies.txt', 'w', encoding='utf-8')
for item in items:# 电影名称name = item.find('a > h2').text()file.write(f'名称:{name}n')# 类别categories = [item.text()for item in item.find('.categories button span').items()]file.write(f'类别:{categories}n')# 上映时间published_at = item.find('.info:contains(上映)').text()published_at = re.search('(d{4}-d{2}-d{2})', published_at). group(1) if published_at and re.search('d{4}-d{2} -d{2}', published_at) else Nonefile.write(f'上映时间:{published_at}n')# 评分score = item.find('p.score').text()file.write(f'评分:{score}n')file.write(f'{"="*50}n')
file.close()  # 这里close要和for在同一级别下,若在for内部会报错

​ 这里的目的主要是演示文件的存储方式,因此省去了 requests 异常处理部分。首先,用 requests作提取网站首页的HTML代码,然后利用 pyquery 解析库将电影的名称、类别、上映时间、评分信息提取出来。

​ 利用 Python 提供的 open 方法打开一个文本文件,获取一个文件操作对象,这里赋值为 file,每提取一部分信息,就利用 file 对象的 write 方法将这部分信息写入文件。

​ 全部提取完毕之后,调用 close 方法将 file 对象关闭,这样抓取的网站首页的内容就成功写入文本中了。

​ 运行程序,可以发现在本地生成了一个 movies.txt 文件,其内容如图所示。

image-20220724090217283

​ 可以看出,电影信息的内容已经被保存成了文本形式。

​ 回过头来看下本节重点需要了解的内容,即文本写入操作,其实就是 open、write、close 这三个方法的用法。

​ open 方法的第一个参数是要保存的目标文件名称;第二个参数代表数据以何种方式写入文本,此处为 w,表示以覆盖的方式写入;第三个参数指定了文件的编码为 utf-8。最后,写入完成后,还需要调用 close 方法来关闭文件对象。

2.打开方式

​ 在刚才的实例中,open 方法的第二个参数设置成了 w,这样在每次写入文本时都会清空源文件,然后将新的内容写入文件。w只是文件打开方式的一种,下面简要介绍一下其他几种。

  • r:以只读方式打开一个文件,意思是只能读取文件内容,而不能写入。这也是默认模式。

  • rb:以二进制只读方式打开一个文件,通常用于打开二进制文件,例如音频、图片、视频等。

  • r+:以读写方式打开一个文件,既可以读文件又可以写文件。

  • rb+:以二进制读写方式打开一个文件,同样既可以读又可以写,只不过读取和写入的都是二进制数据。

  • w:以写入方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。

  • wb:以二进制写入方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。

  • w+:以读写方式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。

  • wb+:以二进制读写格式打开一个文件。如果该文件已存在,则将其覆盖。如果该文件不存在,则创建新文件。

  • a:以追加方式打开一个文件。如果该文件已存在,则文件指针将会放在文件结尾。也就是说,新的内容将会被写到已有内容之后。如果该文件不存在,则创建新文件来写入。

  • ab:以二进制追加方式打开一个文件。如果该文件已存在,则文件指针将会放在文件结尾。也就是说,新的内容将会被写到已有内容之后。如果该文件不存在,则创建新文件来写入。

  • 就是说,新的内容将会被写到已有内容之后。如果该文件不存在,则创建新文件来写入。

  • a+:以读写方式打开一个文件。如果该文件已存在,则文件指针将会放在文件结尾。文件打开时会是追加模式。如果该文件不存在,则创建新文件用于读写。

  • ab+:以二进制追加方式打开一个文件。如果该文件已存在,则文件指针将会放在文件结尾,如果该文件不存在,则创建新文件用于读写。

3.简化写法

​ 文件写入还有一种简写方法,就是使用 with as 语法。当 with控制块结束时,文件会自动关闭,意味着不需要再调用 close 方法。
这种保存方式可以简写如下:

with open('movies.txt', 'w', encoding-'utf-8') as file:file.write(f'名称:{name}n')file.write(f'类别: {categories}n')file.write(f'上映时间: {published_at}n')file.write(f'评分:{score}n')

​ 以上便是利用 Python 将结果保存为 TXT 文件的方法,这种方法简单易用、操作高效,是一种最基本的数据存储方法。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平