python中csv、json文件的写入和读取

2023-11-07

txt文本文件读取:

#txt文本文件读取
def txt_writter():
    """写文件"""#函数说明文档
    with open('data.txt','w',encoding='utf-8') as f:
        f.write('hi\n')#写一行
        lines = [
            'hello\n'
            'welcome\n'
        ]
        f.writelines(lines)#写多行
def txt_read():
    """读文件"""
    with open('data.txt',encoding='utf-8') as f:
        for line in f:#逐行读取数据
            print(line,end='')

if __name__ == '__main__':
    txt_writter()
    txt_read()

csv文件写入读取,程序包括了csv文件基本读取,通过namedtouple映射列表名字以及将csv文件读取到字典表

#csv文件读取
import csv
from collections import namedtuple

def csv_read():
    '''csv文件基本读取'''
    with open('data1.csv',encoding='utf-8') as f:
        reader = csv.reader(f)#把f转换成csv模块下的reader,将csv文件读取到列表
        headers = next(reader)#reader本身就是一个迭代器,支持遍历,可以使用next()来把指针指向第一行,表示表头(注意指next()一旦调用就不能返回了)
        print(headers)#打印表头
        for row in reader:#打印剩下的每行数据
            print(row)#打印出每一行都是一个list,所以可以随意对每项数据进行处理

def csv_read_by_namedtuple():#namedtuple相当于定以一个简易的类,对于对象调用可以按照类的方法
    '''读取csv并用namedtuple映射列名'''
    with open('data1.csv', encoding='utf-8') as f:
        reader = csv.reader(f)
        headers = next(reader)
        print(headers)
        Row = namedtuple('Row',headers)#使用namedtuple定一个namedtuple对象,参数为(对象名称,列表形式的命名规则,这里直接把表头headers传入)
        for r in reader:
            row = Row(*r)#创建namedtuple实例,通过*把r的信息解剖给每行
            print(row)

#将csv文件数据读取到字典表
def csv_read_by_dict():
    '''读取csv文件数据到字典表'''
    with open('data1.csv', encoding='utf-8') as f:
        reader = csv.DictReader(f)#创建字典表实例
        for row in reader:
            print('{} -> {} -> {} -> {}'.format(row['userId'],row.get('movieId'),row['rating'],row['timestamp']))


if __name__ == '__main__':
    csv_read()
    csv_read_by_namedtuple()
    csv_read_by_dict()

csv文件写入:

import  csv


#写入csv文件
def csv_writer():
    '''写入csv文件'''
    headers = ['编号','课程','讲师']
    rows = [
        (1,'python','Tom'),
        (2,'django','Tom'),
        (3,'deep learning','Tom')
    ]
    with open('my_course.csv','w',encoding='utf-8',newline='') as f:
        writer = csv.writer(f)#写入器
        writer.writerow(headers)#写入表头,一行
        writer.writerows(rows)#写入其余数据,多行

#字典表写入csv文件
def csv_writer_dict():
    '''字典表写入csv文件'''
    headers = ['name','age','courses']
    rows = [
        {'name':'A','age':'18','courses':'python'},
        {'name': 'B', 'age': '18', 'courses': 'python'},
        {'name': 'C', 'age': '18', 'courses': 'python'},
        dict(name = 'D',age = 18,courses = 'python')
    ]
    with open('my_name.csv','w',encoding='utf-8',newline='') as f:
        writer = csv.DictWriter(f,headers)#字典表写入器,参数可以直接传入表头
        writer.writeheader()
        writer.writer(rows)

#读取csv文件
def csv_read():
    '''读取csv文件'''
    with open('my_course.csv',encoding='utf-8') as f:
        reader = csv.reader(f)#读取器
        headers = next(reader)
        print(headers)
        for row in reader:
            print(row)

if __name__ == '__main__':
    csv_writer()
    csv_read()
    csv_writer_dict()

json文件(类似于python中的字典表)写入读取

import  json

#dict和josn的相互转化
def json_basic():
    data = {
        'ID': 1,
        'Course': 'Python'
    }
    print(data)
    print('-'*20)
    josn_str = json.dumps(data)#把字典表数据data转化为josn格式的字符串
    print(josn_str)
    josn_data = json.loads(josn_str)#将josn格式的字符串转化为字典表
    print('-' * 20)
    print(josn_data)


#写json文档
def json_writer_file():
    '''写josn文档'''
    data = {
        'ID': 1,
        'Course': 'Python'
    }
    with open('data.json','w',encoding='utf-8') as f:
        json.dump(data,f)#将字典表数据写入json文件

#读json文档
def json_read_file():
    '''读json文档'''
    with open('data.json',encoding='utf-8') as f:
        data = json.load(f)#读取json文件
        print(data)


#类型差异
def json_type_diff():
    '''类型差异'''
    print(json.dumps(True))
    print(json.dumps(False))
    print(json.dumps(None))




if __name__ == '__main__':
    json_writer_file()
    json_read_file()
    json_type_diff()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中csv、json文件的写入和读取 的相关文章

随机推荐

  • Thymeleaf介绍

    前端JS框架有vue js react js Angular js Bootstrap Jquery Zepto等 前端UI框架有 QUICK UI iviewUI Layui elementUI Mint UI WeUI MUI等等 1
  • ZynqMP Vitis2021.1 生成hex或者bin文件

    比如Cortex R5 处理器的Vitis工程生成hex和bin文件 如下图片中的Command中输入下面内容 armr5 none eabi objcopy O binary ProjName elf ProjName bin armr5
  • 算法 · 求两个单链表相交的第一个节点

    目录 一 题目 思路 代码 二 总结 一 题目 求两个单链表相交的第一个节点 struct ListNode int m nKey ListNode m pNext ListNode int key m nkey key m pNext n
  • ubuntu opencv3 安装

    安装完 ubuntu 系统之后立马安装此库 否则后面安装的时候会造成软件包冲突 apt get libopencv dev 在 usr include opencv2 目录下有所有的头文件 opencv2 modules hpp 文件夹里有
  • 重载输入输出运算符

    原文链接 http blog csdn net lyh 521 article details 49601489 重载输入输出运算符 我们平时可以用流 std cout lt
  • 优先队列(堆)应用:动态维护可变序列的中位数

    思考下面一道题 数据流中的中位数 如何得到一个数据流中的中位数 如果从数据流中读出奇数个数值 那么中位数就是所有数值排序之后位于中间的数值 如果从数据流中读出偶数个数值 那么中位数就是所有数值排序之后中间两个数的平均值 我们使用Insert
  • lua中通过debug.sethook()动态跟踪脚本当前执行的情况,包括运行到哪行、哪个函数、哪个文件

    本文参考了 这篇博客 Lua语法小贴士 十一 debug库 凯奥斯的博客 CSDN博客 debug sethook 当执行lua脚本时 为了跟踪调试当前的运行情况 可以通过debug sethook和debug getinfo这2个函数来实
  • 解读电感和电容在交流电路中的作用

    解读电感和电容在交流电路中的作用 山东 司友毓 一 电感 1 电感对交变电流的阻碍作用 交变电流通过电感线圈时 由于电流时刻都在变化 因此在线圈中就会产生自感电动势 而自感电动势总是阻碍原电流的变化 故电感线圈对交变电流会起阻碍作用 前面我
  • 跨站脚本攻击 XSS原理

    个人对XSS攻击的笔记 原理 对可以控制传参的位置 比如url链接中 输入框中 首先闭合输出参数位置前后网页标签 在闭合的中间加上JavaScript代码或者其他的html标签 使得网页能够执行你添加的参数功能 危害 凡是js能做的 大部分
  • 【友盟+】专访:手游寒冬当下 数据运营如何让产品”活”起来

    11月17日 19日 GMGC2016第五届全球游戏开发者大会在成都东郊记忆举办 今年大会的核心版块之一 名为 生存 前两年涌出过千手游团队的成都手游圈如今继续萎缩 中小团队大量解散 人才匮乏 留下来的公司普遍也缺乏拿得出手的成功产品 拥有
  • R语言入门纪

    前几天在图书馆看书 打算找了统计类的书本补充统计学和数据分析的知识 无意中看到了这本书 菜鸟侦探跳帧数据分析 我一向喜欢看基础和应用类的入门书籍 一打开就爱不释手地看了一般 并借回家继续阅读 这是一本日本教授撰写的R语言统计应用小说 情节贴
  • 数组定义及使用

    文章目录 一 数组基本用法 1 数组的定义 2 数组的使用 二 数组作为方法的参数 1 基本用法 2 理解引用类型 3 数组作为方法的返回值 4 数组拷贝 三 二维数组 一 数组基本用法 在编写代码的过程中 有的时候会发现当需要的变量少的时
  • kubernetes域名

    验证一下重新删除并建立pod和svc pod ip和svc ip会变 1 新建rc文件 root master cat nginx test yml apiVersion v1 kind ReplicationController meta
  • js数据类型--object

    系列文章 1 从数据类型讲原型原型链 内容回顾 在JavaScript中 数据类型可以分为原始类型以及引用类型 其中原始类型包括string number boolean null undefined symbol ES6新增 表示独一无二
  • 什么是“理解”?如何在人工智能中定义“理解”?(what is understanding ?)

    这篇文章主要不是解释哲学上的 理解 而是在计算或者人工智能或是数学上定义 理解 对于人而言 理解似乎是一件简单的事情 在我们上课的时候我们能确切的知道是否理解老师所讲的内容 在我们看书的时候我们能确切的知道书中的内容我们是否理解 在我们与人
  • javascript使用方括号([])引用对象的属性和方法

    在JavaScript中 每个对象可以看作是多个属性 方法 的集合 引用一个属性 方法 很简单 即 对象名 属性 方法 名除此之外 还可以用方括号的形式来引用 对象名 属性 方法 名 注意 这里的方法名和属性名是一个字符串 而非原先点号后面
  • oday-------------powered by discuz! 7.2

    利用google搜索关键字 intxt powered by discuz 7 2 找到一个论坛 注册一个账号注册好后 使用exp http 此处为论坛地址 misc php action imme binding response res
  • 一种简单快速有效的低照度图像增强方法

    一种简单快速有效的低照度图像增强方法 一 本文介绍的是一种比较实用并且去阴影效果很好的方法 选自2004年Tao的一篇论文 名称是 An Integrated Neighborhood Dependent Approach for Nonl
  • 采编系统服务器架构,遂宁日报新闻采编系统的设计与实现

    摘要 新闻稿件采编系统是现今报社现代化办公的必备工具 它对于提高新闻报社工作效率和网络接轨有着重要的意义 随着现代社会中网络化 数字化的不断进步 单凭传统的系统加上纯手工的劳动已经越来越难以满足日报社新闻采编管理工作的需求 1 新闻稿件采编
  • python中csv、json文件的写入和读取

    txt文本文件读取 txt文本文件读取 def txt writter 写文件 函数说明文档 with open data txt w encoding utf 8 as f f write hi n 写一行 lines hello n w