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'
            '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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值