• TXT文本文件存储


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

    TXT 文本文件存储

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

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

    1.实例引入

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

    ​ 实例代码如下:

    import requests
    from pyquery import PyQuery as pq
    import re
    
    url = '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 None
        file.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内部会报错
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    ​ 这里的目的主要是演示文件的存储方式,因此省去了 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')
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

  • 相关阅读:
    【图论】树链剖分
    图片一键调整工具V1.0-免费版
    【带头学C++】----- 三、指针章 ---- 3.11 补充重要指针知识(二,拓展基础知识)
    ROS2——常用命令行(四)
    erlang练习题(二)
    设计模式——责任链模式
    C++面试经典题目汇总
    物联网开发笔记(17)- 使用Micropython开发ESP32开发板开发环境准备
    物联网硬件对接,高位在前,低位在后,数据转换方法,需要的拿走!
    IDEA 2023git提交和拉数据都出现问题,分支名一直有感叹号Rebasing
  • 原文地址:https://blog.csdn.net/W_chuanqi/article/details/126017819