Python处理csv、Excel:https://blog.csdn.net/weixin_50517509/article/details/125578376
Python与CSV文件(CSV模块):https://blog.csdn.net/weixin_30711917/article/details/95609536
CSV(逗号分隔值)格式是电子表格和数据库最常见的导入和导出格式。
csv函数
| csv函数 | 说明 |
|---|---|
| csv.reader(csvfile,dialect =‘excel’,** fmtparams ) | 读。返回一个reader对象,它将迭代给定csvfile中的行。 【csvfile:可以是任何支持迭代器协议的对象,并在每次next()调用其方法时返回一个字符串- 文件对象和列表对象都是合适的。如果csvfile是一个文件对象,那么它必须在平台上以“b”标志打开,这会产生影响。 dialect :可选参数,该参数用于定义特定于CSV方言的一组参数。它可以是类的子类的实例,也可以是函数Dialect返回的字符串之一 list_dialects()。 fmtparams:可选参数,可以给出关键字参数来覆盖当前方言中的各个格式参数。】 |
| csv.writer(csvfile,dialect =‘excel’,** fmtparams ) | 写。返回一个编写器对象,负责将用户的数据转换为给定的类文件对象上的分隔字符串。 【csvfile:可以是带有write()方法的任何对象 。如果csvfile是一个文件对象,那么它必须在平台上以“b”标志打开,这会产生影响。 dialect :可选参数,该参数用于定义特定于CSV方言的一组参数。它可以是类的子类的实例,也可以是函数Dialect返回的字符串之一 list_dialects()。fmtparams:可选参数,关键字参数来覆盖当前dialect中的各个格式参数。】 |
| csv.register_dialect(name,[ dialect,] ** fmtparams ) | 将dialect与name联系起来。 name必须是字符串或Unicode对象。dialect可以通过传递子类Dialect,或通过fmtparams关键字参数或两者来指定,并使用关键字参数覆盖dialect的参数 |
| csv.unregister_dialect(name) | 从dialect注册表中删除与名称关联的dialect。如果name不是已注册的dialect名称,则引发An 错误 |
| csv.get_dialect(name) | 返回与name相关的dialect。如果name 不是已注册的dialect名称,则引发An 错误 |
| csv.list_dialects() | 返回所有已注册dialect的名称 |
| csv.field_size_limit([ new_limit ]) | 返回解析器允许的当前最大字段大小。如果给出new_limit,则这将成为新限制 |
reader对象方法
csv.reader(csvfile,dialect =‘excel’,** fmtparams )读。
reader对象:函数DictReader返回的实例和对象 reader()。
- csvreader.next () 将读者的可迭代对象的下一行作为列表返回,根据当前方言进行解析。
Reader对象具有以下公共属性:
- csvreader.dialect 解析器使用的方言的只读描述。
- csvreader. line_num 从源迭代器读取的行数。这与返回的记录数不同,因为记录可以跨越多行。 2.5版中的新功能。
DictReader对象具有以下公共属性:
- csvreader. fieldnames 如果在创建对象时未作为参数传递,则在首次访问时或从文件中读取第一条记录时初始化此属性。
writer对象方法
csv.writer(csvfile,dialect =‘excel’,** fmtparams )写。
writer对象:函数 DictWriter返回的实例和对象 writer()。
甲行必须是字符串或数字为序列 Writer对象和一个字典映射字段名到字符串或数字(通过使它们通过 str() 第一)为 DictWriter对象。请注意,复数会被parens包围。这可能会导致其他读取CSV文件的程序出现问题(假设它们支持复数)。
- csvwriter. writerow (行) 将row参数写入writer的文件对象,根据当前方言进行格式化。
- csvwriter. writerows (行) 将行中的所有元素(如上所述的可迭代行对象)写入编写器的文件对象,并根据当前Dialects进行格式化。
writer对象具有以下public属性:
- csvwriter. dialect writer 使用的Dialects的只读描述。
DictWriter对象具有以下公共方法:
- DictWriter. writeheader () 使用字段名称(在构造函数中指定)写一行。
实例代码
# -*- coding:utf-8 -*-
import os
import sys
import datetime
import csv
path = os.path.dirname(sys.argv[0]) # sys.argv[0]获取到一个文件的绝对路径【需要import sys】。sys.argv[0]相当于os.path.abspath(__file__)
os.chdir(path) # 更改路径为运行文件img.py下的路径
readpath = sys.argv[1] # sys.argv[1]获取到第二个文件的绝对路径, 即需要插入图片的目标文件
# 读取表格的所有数据
readFile = open(readpath, 'r', encoding='utf-8')
read_data = csv.reader(readFile)
allData = list(read_data) # 所有数据
readFile.close()
# 提取第二列chinese,allData[1:]从第二行开始,i1[1]提取第二列
chineseList = [ i1[1] for i1 in allData[1:] ]
# 提取第三列math,allData[1:]从第二行开始,i1[2]提取第三列
mathList = [ i1[2] for i1 in allData[1:] ]
# print(chineseList)
# 数据
csvData = ['d','66','100','kk6899',['kk','90'],['a','88','95']]
# 如果文件夹不存在就创建,filepath:'./output'需要创建的文件夹路径
if not os.path.exists('./output'):
os.mkdir('./output')
# 获取当前系统时间
curr_time = datetime.datetime.now() # 2019-07-06 14:55:56.873893 <class 'datetime.datetime'>
inputFile = './output/output'+ curr_time.strftime("%Y%m%d-%H%M%S")+'.csv'
# 如果newline=''未指定,则嵌入在引用字段中的换行符将不会被正确解释
with open(inputFile, 'w', newline='') as file:
w = csv.writer(file)
# 写入列头
w.writerow(['name','chinese','math'])
# 写入数据
w.writerows(csvData)
print('完成文件:',inputFile)
输出csv表格

1786

被折叠的 条评论
为什么被折叠?



