xi123的个人博客分享 http://blog.sciencenet.cn/u/xi123

博文

python中几类文件的读写

已有 2326 次阅读 2017-11-27 17:03 |个人分类:python学习|系统分类:科研笔记

所使用python模块为json、csv等。

一、json文件读写

1、JSON简介:其全名为JavaScript Object Notation是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式。

2、JSON文件读写的基本函数为dump()和dumps()以及load()和loads()。它们之间的区别是:通过json的dumps模块可以把特定的对象如list和dict序列化处理为字符串;而loads则是dumps的逆过程,即将形似list和dict的字符串转化为特定的对象。dumps和loads均在内存中转换,而dump和load则会多一个步骤,dump把序列化后的字符串写到一个文件中,load则从文件中读出字符串再转化为相应的对象。

3、json文件读写的操作

store_json(data,filename):
(filename, ) json_file:
load_json(filename):
(filename) json_file:
        data = json.load(json_file)
data

4、相关函数参数:

           dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
作用:Serialize ``obj`` to a JSON formatted ``str``.

           dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
作用:Serialize ``obj`` as a JSON formatted stream to ``fp`` (a``.write()``-supporting file-like object).

参数解释:

  • Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类错误

  • ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示

  • indent:应该是一个非负的整型,如果是0,或者为空,则一行显示数据,否则会换行且按照indent的数量显示前面的空白,这样打印出来的json数据也叫pretty-printed json

  • separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(',',':');这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。

  • encoding:默认是UTF-8,设置json数据的编码方式。

  • sort_keys:将数据根据keys的值进行排序。

5、json与python之间的数据类型转换

二、csv文件读写

以下为csv文件读写的操作

store_csv(data,filename):
(filename, ) csvfile:
        writer = csv.writer(csvfile,=)
        writer.writerows(data)
load_csv(filename):
(filename) csvfile:
        reader = csv.reader(csvfile)      data=[]
item reader:
            data.append(item)
        csvfile.close()

   return data


Python写入到csv文件存在空行的解决方法:

   在python3.x的版本中在open函数增加一个参数newline=''即可。

   参考:http://blog.csdn.net/sinat_27339001/article/details/46549927

    在python2.7版本中文件打开的方式使用“wb”

    参考:https://www.cnblogs.com/crooswang/p/5953450.html


错误一:excel打开csv文件显示乱码

    参考:https://jingyan.baidu.com/article/4dc408484776fbc8d846f168.html

错误二:写入csv时报错:_csv.Error: field larger than field limit (131072)

加入以下代码:

import sys

import csv

csv.field_size_limit(sys.maxsize)

再次报错:OverflowError: Python int too large to convert to C long

  import sys

import csv

maxInt = sys.maxsize

decrement =True

while decrement:

# decrease the maxInt value by factor 10

# as long as the OverflowError occurs.    

   decrement =False

   try:        

       csv.field_size_limit(maxInt)

   exceptOverflowError:        

       maxInt = int(maxInt/10)        

       decrement =True

可以使用

参考:https://stackoverflow.com/questions/15063936/csv-error-field-larger-than-field-limit-131072






三、excel文件读写



https://blog.sciencenet.cn/blog-3360373-1087105.html

上一篇:强化学习简介
下一篇:社会网络分析工具简介
收藏 IP: 124.166.232.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-22 03:43

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部