📋 个人简介
💖 作者简介:大家好,我是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 文件,其内容如图所示。
可以看出,电影信息的内容已经被保存成了文本形式。
回过头来看下本节重点需要了解的内容,即文本写入操作,其实就是 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 文件的方法,这种方法简单易用、操作高效,是一种最基本的数据存储方法。