使用python读写txt和json(jsonl)大文件

这篇具有很好参考价值的文章主要介绍了使用python读写txt和json(jsonl)大文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在深度学习方向,尤其是NLP领域,最重要的就是和海量的文字打交道,不管是读取原始数据还是处理数据亦或是最终写数据,合理的读写文件是极为重要的,这篇博客用以记录一下工作中学习到的对大文件读写的过程。

目录

读写txt文本文件

读写JSON文件

读写JSONL文件

遇到的问题

读写txt文本文件

最简单也是最常见的就是读写txt文本文件

读写txt文件直接调用python内部库的open和write函数就基本可以了,比如中student.txt文件中:

张奇    18    计算机学院    看书,打篮球,看电影
刘欣    19    计算机学院    唱歌,健身
杜航    18    计算机学院    动漫,看书
盛蓉    20    外国语学院    唱歌,看书,美食
余杰    20    土木学院    唱歌,运动,游戏
王某    19    土木学院    羽毛球,游戏
李某    20    外国语学院    动漫,唱歌

其中分别为姓名,年龄,学院,兴趣爱好,每类用一个制表符(\t)隔开,兴趣爱好中间用英文逗号分隔开来,然后用open打开txt文件并将内容读取打印

file_txt = "student.txt"
with open(file_txt) as file:
    for line in file:
        name,age,department,hobby = line.strip().split("\t")
        print(name,age,department,hobby)

同样,也可以用write函数写到一个新的文件中去,过程中我们可以用几个list先将数据存起来,也可以一边读一边写,但是一行行读一行行写小数据还好,当文件过大时大量的文件io会话费大量的时间,但是使用list全部存储然后写的话又会比较耗内存,各有优劣,看情况使用

使用list:

file_txt = "student.txt"
file_new_txt = "newstudent.txt"
stu = []
with open(file_txt) as file:
    for line in file:
        name,age,department,hobby = line.strip().split("\t")
        stu.append(name+"-"+age+"-"+department+"-"+hobby)
with open(file_new_txt,"a+") as file:
    for student in stu:
        file.write(student+"\n")

jsonl文件读取,python,json,开发语言边读边写:

file_txt = "student.txt"
file_new_txt = "newstudent.txt"
with open(file_txt) as file:
    for line in file:
        name,age,department,hobby = line.strip().split("\t")
        with open(file_new_txt,"a+") as file_new:
            file_new.write(name+"-"+age+"-"+department+"-"+hobby+"\n")

 txt文件是最常用的,但是也有其局限性,就是很难对文件中分隔开的内容进行标注,比如,对每一行数据都标明姓名:张奇,年龄:18这样,这时就需要用到json文件格式了

读写JSON文件

python中对json文件的读写需要导入json包,然后调用包内函数就可以完成读写了

import json
file_txt_path = "student.txt"
file_json_path = "student.json"
with open(file_txt_path) as file:
    for line in file:
        name,age,department,hobby = line.strip().split("\t")
        hobby = hobby.split(",")
        data = {
                "姓名":name,
                "年龄":age,
                "学院":department,
                "爱好":hobby
            }
        with open(file_json_path,"a+") as file_json:
            file_json.write(json.dumps(data,ensure_ascii=False))
            file_json.write(","+"\n")

这样就会获得这样一个json文件 

jsonl文件读取,python,json,开发语言

 

 但是这样的json文件格式是有问题的,我们需要在前面和后面加个[],并且把最后面那个","去掉

前后加[]倒是比较简单,如何去掉最后一个","倒是比较头疼,我暂时的思路是统计txt文件行数,在最后一行的时候就不写入","了

我们调用wc来统计文件行数:

import json

file_txt_path = "student.txt"
file_json_path = "student.json"

def _wc_count(file_name):
        """通过wc命令统计文件行数"""
        import subprocess
        out = subprocess.getoutput("wc -l %s" % file_name)
        return int(out.split()[0])

count = _wc_count(file_txt_path)
i = 0

with open(file_json_path,"a+") as file:
     file.write("["+"\n")
with open(file_txt_path) as file:
    for line in file:
        name,age,department,hobby = line.strip().split("\t")
        hobby = hobby.split(",")
        data = {
                "姓名":name,
                "年龄":age,
                "学院":department,
                "爱好":hobby
            }
        with open(file_json_path,"a+") as file_json:
            file_json.write(json.dumps(data,ensure_ascii=False))
            if(i < count):
                file_json.write(","+"\n")
            else:
                file_json.write("\n")
                file_json.write("]")
            i +=1

这样写入之后就变成了

jsonl文件读取,python,json,开发语言

 这样,将完成了json文件的写入

json文件的读会比较不太好用,因为它是无法一行行或者说一条条数据的读的,只能一次性将所有内容读到内存中,代码如下:

import json

file_json_path = "student.json"

with open(file_json_path) as file:
    result = json.loads(file.read())
    #result是一个json对象

for stu in result:
    hobby = ",".join(stu["爱好"])
    print(stu["姓名"]+"\t"+stu["年龄"]+"\t"+stu["学院"]+"\t"+hobby)

jsonl文件读取,python,json,开发语言

 但是上面也提到了,json文件只能一次性将所有内容读到内存中然后进行操作,当文件很大的时候这样说不合理的,尤其是现在的NLP领域,文件都有数十G甚至上百G,显然内存是不足以放下的,那么这样,我们就要用到一个可以逐行读取json对象的文件格式了

读写JSONL文件

jsonl文件的读写和json文件很相似,但是文件格式上有一丝丝的不同

jsonl文件读取,python,json,开发语言

图中将}后面的","去掉就是一个完整的jsonl文件格式

所以,我们写jsonl文件就十分方便了。代码如下

import jsonlines

file_txt_path = "student.txt"
file_jsonl_path = "student.jsonl"


with open(file_txt_path) as file:
    for line in file:
        name,age,department,hobby = line.strip().split("\t")
        hobby = hobby.split(",")
        data = {
                "姓名":name,
                "年龄":age,
                "学院":department,
                "爱好":hobby
            }
        with jsonlines.open(file_jsonl_path,mode="a") as file_jsonl:
            file_jsonl.write(data)

jsonl文件读取,python,json,开发语言

然后就是jsonl的读了,代码如下:

import jsonlines

file_jsonl_path = "student.jsonl"

with open(file_jsonl_path) as file:
    for stu in jsonlines.Reader(file):
        hobby = ",".join(stu["爱好"])
        print(stu["姓名"]+"\t"+stu["年龄"]+"\t"+stu["学院"]+"\t"+hobby)

jsonl文件读取,python,json,开发语言

 这样,就可以实现一条条读取json对象了

遇到的问题

上面这些可以满足大部分对数据的读写了,但是我在工作中遇到了一个问题,就是json对象的删除情况,在json文件中,可以直接调用del来删除字段,但是中jsonl文件中,我无法删除指定字段,只能用复写新文件的方法来实现,翻阅了很久的资料都没有找到相应的方法,希望有大佬能在评论区指导一下文章来源地址https://www.toymoban.com/news/detail-755553.html

到了这里,关于使用python读写txt和json(jsonl)大文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pyspark读写csv,txt,json,xlsx,xml,avro等文件

    读: 读: 写: 读: 写: 读: 写: 读: 写: 读: 写: 读: 写: 读: 写: 读: 写:

    2024年02月07日
    浏览(36)
  • Android开发创建txt文件并读写txt文件数据

    在Android开发过程中,经常会遇到需要创建txt文件并写入数据的情况。今天我们来介绍一下如何实现这样的功能。 代码中的mStrPath为txt文件存储的路径,根据个人的需求确定路径,此处以 根目录,并命名为transcript.txt 为例,即 1. 读出txt文件的数据 3. 写入txt数据 [注]: ①当F

    2024年02月12日
    浏览(32)
  • 【Python 文件读写】— txt文件

    目录 一、文件读写模式 二、读文件 1、所用函数 2、示例 三、写文件 1、所用函数 2、示例 四、另一种书写形式 1、读文件 2、写文件 模式 具体信息 r 文件只读,若文件不存在则报错 r+ 文件可读可写,若文件不存在则报错,写入时会覆盖原有内容 rb 文件只读(二进制形式),若

    2024年02月12日
    浏览(43)
  • python读写txt 文件

    一、读文件 步骤:打开 – 读取 – 关闭 f= open(‘D:pythontxt1.txt’) f.read() #返回txt 文件的所有内容 while True: lines = f.readline() # 按行读取数据,行自动+1 if not lines: break pass print(lines) 二、文件写入 f1= open(‘D:pythontxt1.txt’,‘w’) f1.write(‘5.5 5.6!’) f1.close() //只有close的时候文件才

    2023年04月09日
    浏览(29)
  • Python 写入json 写入jsonl

    Python处理json文本文件主要是以下四个函数: 函数 作用 json.dumps 对数据进行编码,将python中的字典 转换为 字符串 json.loads 对数据进行解码,将 字符串 转换为 python中的字典 json.dump 将dict数据写入json文件中 json.load 打开json文件,并把字符串转换为python的dict数据 写入json的内容只

    2024年02月12日
    浏览(26)
  • 【100个 Unity实用技能】☀️ | Unity读取本地文件(Json,txt等)的三种方法示例

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2023年04月08日
    浏览(42)
  • 【Python】使用Python读取JSON文件中的内容

    在自动化测试过程中,会将部分数据保存到JSON文件中。 JSON文件有以下特点: JSON是存储和交换文本信息的语法,类似XML。 JSON比XML更小、更快、更易解析 JSON是轻量级的文本数据交换格式。 JSON是轻量级的文本数据交换格式。 JSON独立于语言 JSON具有自我描述性、更易理解。

    2024年02月13日
    浏览(35)
  • Python读取txt文件

    Python是一种流行的编程语言,提供了许多处理文件的功能。在Python中,我们可以使用内置的文件操作函数来读取和处理文本文件,包括读取txt文件。本文将介绍如何使用Python读取txt文件,并提供相应的源代码。 打开文件 要读取一个txt文件,首先需要使用Python的内置函数 ope

    2024年02月06日
    浏览(35)
  • Python:使用openpyxl读取Excel文件转为json数据

    openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files 文档 https://openpyxl.readthedocs.io/en/stable/ https://pypi.org/project/openpyxl/ 安装 环境 读取文件示例:将Excel文件读取为json数据 有如下一个文件 data.xlsx 实现代码 输出读取的json数据 读写示例

    2024年02月15日
    浏览(53)
  • Python 实现txt、excel、csv文件读写【附源码】

    前言 一、txt文件读写 二、excel文件读写 总结 本文介绍使用Python进行文件读写操作,包括txt文件、excel文件(xlsx、xls、csv) 编译器使用的是PyCharm read()                  # 一次性读取全部内容 readline()            # 读取第一行内容 readlines()          # 读取文本全部内

    2024年02月01日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包