zoukankan      html  css  js  c++  java
  • Python学习week7-csv与ini文件处理

    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)
  • 相关阅读:
    ubuntu上一些好的操作方式 习惯 文件备份
    ubuntu ufw 防火墙的设置
    ubuntu 的SSH 服务
    对一个数组的处理。
    ubuntu 的 crontab 计划任务
    django1.6 apache 项目部署.
    只此荒废的一个半个月。
    myeclipse python插件安装和环境配置(Windows7下)
    ubunt 12.04 64位 english 服务器版安装
    ubuntu sudo自动切换root 无需输入密码
  • 原文地址:https://www.cnblogs.com/soulgou123/p/9827456.html
Copyright © 2011-2022 走看看