读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)