【Python】文件讀取:逐行讀取應用實例——從一個JSONL文件中逐行讀取文件

從一個JSONL文件中逐行讀取文件,并將這些問題保存到一個新的JSONL文件中

import json
import argparse
import os  # 導入os模塊用于檢查文件是否存在def read_questions_from_jsonl(file_path, limit):"""從JSONL文件中讀取指定數量的question部分的內容參數:file_path: JSONL文件的路徑limit: 要讀取的問題數量返回:一個包含最多`limit`個question的列表"""questions = []count = 0try:with open(file_path, 'r', encoding='utf-8') as file:for line in file:if count >= limit:break  # 達到限制,停止讀取# 解析每行JSONjson_data = json.loads(line)# 提取questionif 'question' in json_data:questions.append(json_data['question'])count += 1except json.JSONDecodeError:print("錯誤: 文件格式無效或損壞")return questionsdef save_questions_to_jsonl(questions, output_file_path):"""將問題列表保存到JSONL文件中參數:questions: 要保存的問題列表output_file_path: 輸出文件的路徑"""with open(output_file_path, 'w', encoding='utf-8') as file: for question in questions:json_line = json.dumps({"question": question}, ensure_ascii=False)file.write(json_line + '\n')def main():# 設置命令行參數解析parser = argparse.ArgumentParser(description='從JSONL文件中提取問題并保存到新的JSONL文件中')parser.add_argument('input_path', help='輸入JSONL文件的路徑')parser.add_argument('output_path', help='輸出JSONL文件的路徑')parser.add_argument('--limit', type=int, default=100, help='要讀取的問題數量,默認為100')  # 設置默認值# 解析命令行參數args = parser.parse_args()# 檢查輸入文件是否存在if not os.path.exists(args.input_path):raise FileNotFoundError(f"錯誤: 輸入文件 {args.input_path} 不存在")# 讀取指定數量的問題questions = read_questions_from_jsonl(args.input_path, args.limit)# 將問題保存到JSONL文件中save_questions_to_jsonl(questions, args.output_path)print(f"已將 {len(questions)} 個問題保存到 {args.output_path}")if __name__ == "__main__":main()

檢查輸入文件是否存在

import os# 檢查輸入文件是否存在
if not os.path.exists(args.input_path):raise FileNotFoundError(f"錯誤: 輸入文件 {args.input_path} 不存在")

檢查要輸出的文件是否存在

使用open函數以寫入模式(‘w’)打開文件時,如果指定的文件路徑不存在,Python會自動創建一個新的文件。

如果存在在現有文件后追加,如果不存在,創建新的輸出文件,可修改函數為

def save_questions_to_jsonl(questions, output_file_path):"""將問題列表保存到JSONL文件中參數:questions: 要保存的問題列表output_file_path: 輸出文件的路徑"""# 檢查輸出文件是否存在if os.path.exists(output_file_path):# 文件存在,以追加模式打開mode = 'a'else:# 文件不存在,以寫入模式打開mode = 'w'# 根據mode變量動態選擇文件打開模式with open(output_file_path, mode, encoding='utf-8') as file:for question in questions:json_line = json.dumps({"question": question}, ensure_ascii=False)file.write(json_line + '\n')

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87704.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87704.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87704.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

百寶箱生成智能體

點擊新建應用 工作流如下: 點擊發布 點擊Web服務,上架

嵌入式 數據結構學習(五) 棧與隊列的實現與應用

一、棧(Stack)詳解 1. 棧的基本概念 棧的定義與特性 后進先出(LIFO):最后入棧的元素最先出棧 操作限制:只能在棧頂進行插入(push)和刪除(pop)操作 存儲位置:我們實現的鏈棧位于堆區(malloc分配),系統棧區存儲函數調用信息 棧…

匯編與接口技術:8259中斷實驗

一、實驗目的 該實驗使學生掌握8259向量中斷方式的硬件連接和軟件編程的方法,同時使同學掌握中斷和其它接口芯片配合來完成某一特定任務的方法。 二、實驗內容 1、手動產生單脈沖作為中斷請求信號連接到MIRQ3上和SIRT10上。每按一次開關產生一次中斷,…

Ajax的初步學習

一、什么是 Ajax? Ajax (Asynchronous JavaScript and XML) 是一種無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。通過在后臺與服務器進行少量數據交換,Ajax 可以使網頁實現異步更新。 主要特性: 異步性 (Asynchronous…

OOM電商系統訂單緩存泄漏,這是泄漏還是溢出

電商系統訂單緩存泄漏的本質分析一、明確概念區別內存泄漏(Memory Leak)定義:對象已經不再被使用,但由于被錯誤引用而無法被垃圾回收特點:內存使用量隨時間持續增長,最終可能導致OOM類比:像浴缸…

二進制安全-匯編語言-02-寄存器

二、寄存器 水滴石穿 一個典型的CPU由運算器、控制器、寄存器等器件構成,這些器件靠內部總線相連 內部總線實現CPU內部各個器件之間的聯系,外部總線實現CPU和主板上其他器件的聯系 簡單說,在CPU中: 運算器進行信息處理寄存器進…

Java——初始guava(1)

基于 Google Guava 官方教程的解答 ?? Guava 提供了哪些 JDK 不具備的 API? Guava 擴展了 JDK 的集合框架,提供了多種 JDK 沒有的實用 API: 不可變集合(Immutable Collections) ImmutableList、ImmutableSet、ImmutableMap 等特性:創建后不可修改,線程安全,性能優于…

day53

import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset import numpy as np from sklearn.preprocessing import MinMaxScaler from sklearn.datasets import load_iris import warnings # 忽略不必要的警…

c++ python 共享內存

一、目的 是為了c來讀取并解碼傳遞給python,Python做測試非常方便,c 和 python之間必須定好協議,整體使用c 來解碼,共享內存傳遞給python 二、主類 主類,串聯decoder,注意decoder并沒有直接在顯存里面穿…

react函數組件的props,ref,state。

react開發我們會把頁面分為一個個組件,組件是獨立而且可復用的重復代碼片段。具體來說組件可以是一個按鈕,一個輸入框。react組件有兩種定義方法,一種是函數組件,一種是類組件。我們這里說一下函數組件之間父子之間如何傳遞props參…

基于ARM+FPGA實現的BISS-C協議解決方案,適用于高精度光柵位移傳感器等

模塊簡介 本資源提供了專為FPGA設計的BISS-C接口協議發送模塊源碼。BISS-C模式作為一種高速、同步的串行通信協議,廣泛應用于高精度光柵位移傳感器的數據傳輸中,特別適用于需要精確位置信息的應用場景。此模式遵循主從架構,其中FPGA作為主控制…

spring中@Transactional注解和事務的實戰理解附代碼

文章目錄 前言一、事務是什么?二、事務的特性2.1隔離性2.2事務的隔離級別 三、Transactional注解Transactional注解簡介基本用法常用屬性配置事務傳播行為事務隔離級別異常處理與回滾性能優化建議 四、 事務不生效的可能原因方法訪問權限非public自調用問題異常被捕…

替代進口SCA7606【智芯微】國產高精度電流傳感器 工業新能源電網專用

SCA7606(智芯微)產品解析與推廣文案一、產品概述SCA7606 是 智芯微電子(ZXMICRO) 推出的一款 高精度數字隔離式電流傳感器芯片,采用 霍爾效應數字輸出 技術,專為 工業控制、新能源、智能電網 等領域的電流檢…

Java 與 Vue 全棧開發:“一課一得“ 學習筆記系統實戰

一、項目背景與核心價值 "一課一得" 是一個面向學習者的筆記管理平臺,旨在幫助用戶系統化記錄、整理和回顧學習內容。項目采用前后端分離架構:前端基于 Vue.js 構建交互式界面,后端使用 Java Spring Boot 實現業務邏輯&#xff0c…

百度文心大模型 4.5 開源深度測評:技術架構、部署實戰與生態協同全解析

聲明:本文只做實際測評,并非廣告 1.前言 2025 年 6 月 30 日,百度做出一項重大舉措,將文心大模型 4.5 系列正式開源,并選擇國內領先的開源平臺 GitCode 作為首發平臺。該模型也是百度在2025年3月16日發布的自研的新一…

力扣_鏈表_python版本

一、206. 反轉鏈表代碼: class Solution:def reverseList(self, head):dummy ListNode()cur headwhile cur:last cur.nextcur.next dummy.nextdummy.next curcur lastreturn dummy.next二、92. 反轉鏈表 IIclass Solution:def reverseBetween(self, head: Opt…

[netty5: WebSocketProtocolHandler]-源碼分析

在閱讀這篇文章前,推薦先閱讀:[netty5: MessageToMessageCodec & MessageToMessageEncoder & MessageToMessageDecoder]-源碼分析 WebSocketProtocolHandler WebSocketProtocolHandler 是 WebSocket 處理的基礎抽象類,負責管理 Web…

[2025CVPR]一種新穎的視覺與記憶雙適配器(Visual and Memory Dual Adapter, VMDA)

引言 多模態目標跟蹤(Multi-modal Object Tracking)旨在通過結合RGB模態與其他輔助模態(如熱紅外、深度、事件數據)來增強可見光傳感器的感知能力,尤其在復雜場景下顯著提升跟蹤魯棒性。然而,現有方法在頻…

理想汽車6月交付36279輛 第二季度共交付111074輛

理想汽車-W(02015)發布公告,2025年6月,理想汽車交付新車36279輛,第二季度共交付111074輛。截至2025年6月30日,理想汽車歷史累計交付量為133.78萬輛。 在成立十周年之際,理想汽車已連續兩年成為人民幣20萬元以上中高端市…

MobileNets: 高效的卷積神經網絡用于移動視覺應用

摘要 我們提出了一類高效的模型,稱為MobileNets,專門用于移動和嵌入式視覺應用。MobileNets基于一種簡化的架構,利用深度可分離卷積構建輕量級的深度神經網絡。我們引入了兩個簡單的全局超參數,能夠有效地在延遲和準確性之間進行…