Python 学习 第十三篇:数据的读写-文件、DataFrame、json

Python的文件是一个重要的对象,使用open()函数来打开文件,建立文件对象,进行文件的读写操做。当数据用于交换信息时,一般须要把数据保存为有格式的文本数据,能够保存为有特定的行分隔符和列分隔符的数据,这能够使用pandas模块中的函数来读写;也能够保存为json结构的数据,这能够使用json模块中的函数来实现;对于大型的数据交互,一般使用数据库。html

一,Python的open函数

open()函数用于打开文件,建立文件对象:python

open(name, mode, encoding=None)

参数注释:正则表达式

name是文件名,包括路径数据库

encoding 是编码方式,经常使用的编码方式是utf-8json

mode是打开文件的模式,最经常使用的模式是:函数

  • r:只读模式,表示打开文件是为了从文件的开头读取文件中的数据;
  • w:只写模式,表示打开文件是为了向文件写入数据。若是该文件已存在,那么打开该文件,删除原有的内容,从文件开头开始写入;若是该文件不存在,那么建立新的文件。

open()函数建立一个file 对象,文件对象的主要方法:编码

  • file.read([size]):size 未指定则返回整个文件,若是文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。
  • file.readline():只读取一行。
  • file.readlines([size]) :返回包含size行的列表, size 未指定则返回所有行。
  • for line in f: print( line ):经过迭代器访问。
  • f.write("hello\n"):若是要写入字符串之外的数据,先将他转换为字符串。
  • f.close() 关闭文件

1,读取文件spa

调用open()函数打开一个文件,设置mode='r',表示打开文件是为了读取文件中的数据,调用文件对象的函数或迭代器来逐行读取数据:.net

file = open('test.txt','r',encoding='utf-8')
lines = [line.strip() for line in file] 
file.close()

注意:打开文件以后,完成文件的读写以后,必须调用文件对象的close()方法,最终关闭文件。code

2,写入文件

调用open()函数打开一个文件,若是设置mode='w',那么表示打开文件是为了向文件中写入数据,调用文档对象的write('content')函数向文档中写入内容。

file = open('test.txt','w',encoding='utf-8')
file.write('write content to file')
file.close()

注意:打开文件以后,完成文件的读写以后,必须调用文件对象的close()方法,最终关闭文件。

3,文件的关闭

调用open()函数打开一个文件,是把文件读取到内存中的,若是不及时关闭文件,文件对象就会一直占用系统资源,除了调用文件对象的close()方法关闭文件以外,还能够使用 with open(),由系统自动关闭文件:

with open('test.txt','r',encoding='utf-8') as file:
    lines = [line.strip() for line in file] 

二,pandas模块

pandas模块提供了一些用于把表格型数据读取为DataFrame对象的函数。

1,格式化数据的读取

read_csv:从文件、URL、文件型对象中加载带分隔符的数据,默认的分隔符是逗号。

read_table:从文件、URL、文件型对象中加载带分隔符的数据,默认的分隔符是制表符(\t)。

参数注释:

  • path:要读取的文件的位置
  • sep:用于对行中各字段进行拆分的字符序列或正则表达式
  • header:用做列名的行号,默认值是0,若是没有header行,设置为None
  • index_col:用于行索引的列编号
  • names:用于自定义列名列表,结合header=None
  • na_values:一组用于替换NA的值
  • iterator:返回一个TextParser以便逐块读取文件
  • chunksize:文件的大小,用于迭代
  • nrows:须要读取的行数,从文件开始处计算

 2,输出数据

利用DataFrame的to_csv方法,能够把数据写到一个以逗号分隔的文件中

DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, 
header=True, index=True, index_label=None, mode='w', encoding=None, compression=None, 
quoting=None, quotechar='"', line_terminator='\n', chunksize=None, tupleize_cols=None, 
date_format=None, doublequote=True, escapechar=None, decimal='.')

经常使用参数注释:

  • path_or_bu:输出文件的路径,或者设置sys.stdout
  • sep:行中个字段的分隔符,默认是逗号
  • na_rep:替换缺失数据的字符
  • columns:列名列表,结合header=None
  • header:是否输出header,默认值是True
  • index:是否输出索引,默认是True
  • line_terminator:列分隔符

三,json

Python中的json对象实际是一个字典结构,用于存储和交换信息,导入json模块:

import json

1,把字符串转换为json

json的load()方法用于把josn格式的字符串转换为json对象,这其实是一个字典结构:

json_string=  '{ "name":"John", "age":30, "city":"New York"}'
# parse string to json
json_obj = json.loads(json_string)

2,把字典转换为json字符串

json的dumps()函数用于把字典结构转换为json格式的字符串。

x = {
  "name": "John",
  "age": 30,
  "city": "New York"
}
# convert dict into JSON string:
json_string = json.dumps(x)

 

参考文档:

Python之文件读写

pandas系列 read_csv 与 to_csv 方法各参数详解(全,中文版)

Python JSON

相关文章
相关标签/搜索