||
所使用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()
在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文件读写
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-15 22:58
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社