1、CSV文件
1.1、csv文件简介
# 什么是csv文件?csv是一个被行分隔符,列分隔符分成行和列的文本文件;
# csv不指定字符编码;
# 行分隔符为 ,最后一行可以没有换行符;
# 列分隔符通常为逗号,或者制表符;
# 每一行为一条记录record;字段可以使用双引号括起来,也可以不使用;如果字段中出现了双引号、逗号、换行符必须使用双引号括起来,如果字段的值是双引号,则要使用两个双引号表示一个转义;
1.2、手动生成csv文件
# 手动写入csv文件,注意按照cvs文件格式标准写入即可;
p= Path('f:/tmp/mycsv/test.csv') parent=p.parent if not parent.exists(): parent.mkdir(parents=True) csv_body=''' id,name,age,comment 1,zs,18,'zhangsan' 2,ls,20,"this is a ""test"" string" 3,www,23,"你好 计算机 " ''' p.write_text(csv_body)
# 注意引号问题;
1.3、csv模块
# 导入csv模块 import csv
# reader(csvfile,dialect='excel',**fmtparams)
# 返回reader对象,是一个行迭代器;
# 默认使用excel方言,如下:
- delimiter 列分隔符,逗号;
- lineterminator 行分隔符,
- quotechar 字段的引用符号,缺省为“双引号;
# 主要方法有:writerow、writerows
import csv p = Path('f:/tmp/mycsv/test.csv') rows = [ [4,'tom',22,'toms'], [5,'jerry',23,'jerry'], (6,'justin',22,'just "in'), "abcdefghi", ((1,),(2,)) ] row = rows[0] with open(str(p),'w',newline='') as f: writer = csv.writer(f) writer.writerow(row) writer.writerows(rows) with open(str(p)) as f: reader = csv.reader(f) print(next(reader)) print(next(reader)) for line in reader: print(line)
# 说明写入的row行,需要一个可迭代对象就可以,可迭代的每一个元素,将作为CSV行的每一个元素;
# 特别要注意下:windows下会在每行多出一个 ,造成如下情况:
解决办法open('test.csv','w',newline=''),解决后为:
2、ini文件处理
2.1、configparser模块
# 导入模块 from configparser import ConfigParser
# 将字典写入一个ini文件:
from configparser import ConfigParser import json cfg=ConfigParser() d={ 'default':{'a':'test'}, 'mysql':{ 'default-character-set':'utf-8', 'a':1000 }, 'mysqld':{ 'datadir':'/dbserver/data', 'port':3306, 'character-set-server':'utf-8', 'sql_mode':'NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES' } } cfg.read_dict(d) cfg.write(open('test.ini','w'))
# 将一个ini文件读取并存为字典
cfg2=ConfigParser() cfg2.read('test.ini',encoding='utf-8') dest={} for sect in cfg2.sections(): print(sect,cfg2.items(sect)) dest[sect]=dict(cfg2.items(sect)) print(dest)