Python读写csv文件

读写csv文件

读csv文件

csv文件本身就是个纯文本文件,这种文件格式经常用来作为不同程序之间的数据交互的格式.

csv文件可以直接使用excel工具打开

读取csv文件:

with open(path,"r") as f:
    csv_reader=csv.reader(f)
    #csv_reader 迭代器

演示:
需求:读取001.scv文件
说明:可以直接打印,然后定义list

import csv

def readCsv(path):
    #列表
    infoList = []
    #以只读的形式打开文件
    with open(path, 'r')  as f:
        #读取文件的内容
        allFileInfo = csv.reader(f)
        #将获取到的内容逐行追加到列表中
        for row in allFileInfo:
            infoList.append(row)
    return infoList
path = r"C:\Users\xlg\Desktop\001.csv"
info = readCsv(path)

演示:
读取前三十条信息
写成函数的形式

import csv

def getInfo(n,path):
    infoList = []
    with open(path,"r") as f:
        csv_reader = csv.reader(f)
        for i in range(n):
            try:
                infoList.append(next(csv_reader))
            except StopIteration as e:
                break
    return infoList

res = getInfo(30,"000003.csv")
print(res)

写csv文件

语法:

csv文件的写入:
写入到csv文件的是一个二维列表.
with open("001.csv","w",newline="") as f:
    #获取csv_writer对象
    csv_writer = csv.writer(f)
    #一次性写入
    csv_writer.writerows(res)
    #一次性写入一行
    csv_writer.writerow(res[0])
    
newline=""  末尾不写入换行

演示:

需求:向002.csv文件中写入内容

import csv

#以写的方式打开文件
def writeCsv(path,data)with open(path,'w')  as f:
        writer = csv.writer(f)
        for rowData in data:
            print("rowData =", rowData)
            #按行写入
            writer.writerow(rowData)
path = r"C:\Users\xlg\Desktop\002.csv"
writeCsv(path,[[1,2,3],[4,5,6],[7,8,9]])       

演示:
去除前面两项与后面两项,将中间的部分写入到新的文件中

import csv

res = [['日期', '股票代码', '名称', '收盘价', '最高价', '最低价', '开盘价', '前收盘', '涨跌额', '涨跌幅', '换手率', '成交量', '成交金额', '总市值', '流通市值'], ['2002-04-26', "'000003", 'PT金田A', '2.71', '2.71', '2.71', '2.71', '2.58', '0.13', '5.0388', '2.2901', '4397205', '11916425.55', '702423279.22', '520349278.84'], ['2002-04-25', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.58', 'None', 'None', '0.0', '0', '0.0', '668727697.56', '495387874.32'], ['2002-04-24', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.58', 'None', 'None', '0.0', '0', '0.0', '668727697.56', '495387874.32'], ['2002-04-23', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.58', 'None', 'None', '0.0', '0', '0.0', '668727697.56', '495387874.32'], ['2002-04-22', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.58', 'None', 'None', '0.0', '0', '0.0', '668727697.56', '495387874.32'], ['2002-04-19', "'000003", 'PT金田A', '2.58', '2.58', '2.58', '2.58', '2.46', '0.12', '4.878', '0.7354', '1412175', '3643411.5', '668727697.56', '495387874.32'], ['2002-04-18', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.46', 'None', 'None', '0.0', '0', '0.0', '637624083.72', '472346577.84'], ['2002-04-17', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.46', 'None', 'None', '0.0', '0', '0.0', '637624083.72', '472346577.84'], ['2002-04-16', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.46', 'None', 'None', '0.0', '0', '0.0', '637624083.72', '472346577.84'], ['2002-04-15', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.46', 'None', 'None', '0.0', '0', '0.0', '637624083.72', '472346577.84'], ['2002-04-12', "'000003", 'PT金田A', '2.46', '2.46', '2.46', '2.46', '2.34', '0.12', '5.1282', '0.2588', '496937', '1222465.02', '637624083.72', '472346577.84'], ['2002-04-11', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.34', 'None', 'None', '0.0', '0', '0.0', '606520469.88', '449305281.36'], ['2002-04-10', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.34', 'None', 'None', '0.0', '0', '0.0', '606520469.88', '449305281.36'], ['2002-04-09', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.34', 'None', 'None', '0.0', '0', '0.0', '606520469.88', '449305281.36'], ['2002-04-08', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.34', 'None', 'None', '0.0', '0', '0.0', '606520469.88', '449305281.36'], ['2002-04-05', "'000003", 'PT金田A', '2.34', '2.34', '2.34', '2.34', '2.23', '0.11', '4.9327', '0.2451', '470662', '1101349.08', '606520469.88', '449305281.36'], ['2002-04-04', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.23', 'None', 'None', '0.0', '0', '0.0', '578008823.86', '428184092.92'], ['2002-04-03', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.23', 'None', 'None', '0.0', '0', '0.0', '578008823.86', '428184092.92'], ['2002-04-02', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.23', 'None', 'None', '0.0', '0', '0.0', '578008823.86', '428184092.92'], ['2002-04-01', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.23', 'None', 'None', '0.0', '0', '0.0', '578008823.86', '428184092.92'], ['2002-03-29', "'000003", 'PT金田A', '2.23', '2.23', '2.23', '2.23', '2.12', '0.11', '5.1887', '0.2323', '446027', '994640.21', '578008823.86', '428184092.92'], ['2002-03-28', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.12', 'None', 'None', '0.0', '0', '0.0', '549497177.84', '407062904.48'], ['2002-03-27', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.12', 'None', 'None', '0.0', '0', '0.0', '549497177.84', '407062904.48'], ['2002-03-26', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.12', 'None', 'None', '0.0', '0', '0.0', '549497177.84', '407062904.48'], ['2002-03-25', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.12', 'None', 'None', '0.0', '0', '0.0', '549497177.84', '407062904.48'], ['2002-03-22', "'000003", 'PT金田A', '2.12', '2.12', '2.12', '2.12', '2.02', '0.1', '4.9505', '0.2627', '504495', '1069529.4', '549497177.84', '407062904.48'], ['2002-03-21', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.02', 'None', 'None', '0.0', '0', '0.0', '523577499.64', '387861824.08'], ['2002-03-20', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.02', 'None', 'None', '0.0', '0', '0.0', '523577499.64', '387861824.08'], ['2002-03-19', "'000003", 'PT金田A', '0.0', '0.0', '0.0', '0.0', '2.02', 'None', 'None', '0.0', '0', '0.0', '523577499.64', '387861824.08']]



with open("001.csv","w",newline="") as f:
    csv_writer = csv.writer(f)
    csv_writer.writerows(res)

def writer(path,res):
    with open(path,"w",newline="") as f:
        csv_writer = csv.writer(f)
        for row in res:
            csv_writer.writerow(row[2:-3])


writer("003.csv",res)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值