Python的文件是一个重要的对象,使用open()函数来打开文件,创建文件对象,进行文件的读写操作。当数据用于交换信息时,通常需要把数据保存为有格式的文本数据,可以保存为有特定的行分隔符和列分隔符的数据,这可以使用pandas模块中的函数来读写;也可以保存为json结构的数据,这可以使用json模块中的函数来实现;对于大型的数据交互,通常使用数据库。
open()函数用于打开文件,创建文件对象:
open(name, mode, encoding=None)
参数注释:
name是文件名,包括路径
encoding 是编码方式,常用的编码方式是utf-8
mode是打开文件的模式,最常用的模式是:
open()函数创建一个file 对象,文件对象的主要方法:
1,读取文件
调用open()函数打开一个文件,设置mode=‘r‘,表示打开文件是为了读取文件中的数据,调用文件对象的函数或迭代器来逐行读取数据:
file = open(‘test.txt‘,‘r‘,encoding=‘utf-8‘) lines = [line.strip() for line in file] file.close()
注意:打开文件之后,完成文件的读写之后,必须调用文件对象的close()方法,最终关闭文件。
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模块提供了一些用于把表格型数据读取为DataFrame对象的函数。
1,格式化数据的读取
read_csv:从文件、URL、文件型对象中加载带分隔符的数据,默认的分隔符是逗号。
read_table:从文件、URL、文件型对象中加载带分隔符的数据,默认的分隔符是制表符(\t)。
参数注释:
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=‘.‘)
常用参数注释:
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)
使用pymssql连接SQL Server数据库,首先创建连接和游标:
import pymssql conn = pymssql.connect(host=‘host‘,user=‘user‘,password=‘pwd‘,database=‘db_name‘) cursor = conn.cursor()
当执行select语句获得数据时,返回的数据集有两种格式:元组和字典,这需要在创建游标时设置,as_dict的默认值是False。
cursor = conn.cursor(as_dict=True)
1,执行数据更新和删除
通过游标的execute()函数来执行TSQL语句,调用 commit() 来提交事务
cursor.execute(""" sql statement """) conn.commit()
2,执行数据的多行插入
使用游标的executemany()函数来插入多行数据
cursor.executemany( "INSERT INTO persons VALUES (%d, %s, %s)", [(1, ‘John Smith‘, ‘John Doe‘), (2, ‘Jane Doe‘, ‘Joe Dog‘), (3, ‘Mike T.‘, ‘Sarah H.‘)]) conn.commit()
3,遍历数据
当从SQL Server数据库中获取数据时,使用游标的fetchone()函数,以迭代方式返回结果集的一行数据。
cursor.execute(‘SELECT * FROM persons WHERE salesrep=%s‘, ‘John Doe‘) # 遍历数据(存放到元组中) 方式1 row = cursor.fetchone() while row: print("ID=%d, Name=%s" % (row[0], row[1])) row = cursor.fetchone() # 遍历数据(存放到元组中) 方式2 for row in cursor: print(‘row = %r‘ % (row,)) # 遍历数据(存放到字典中) # cursor = conn.cursor(as_dict=True) # cursor.execute(‘SELECT * FROM persons WHERE salesrep=%s‘, ‘John Doe‘) # for row in cursor: # print("ID=%d, Name=%s" % (row[‘id‘], row[‘name‘]))
4,关闭连接
当查询完成之后,一定要关闭连接:
conn.close()
使用with来自动关闭连接:
import pymssql server = "187.32.43.13" user = "root" password = "1234" with pymssql.connect(server, user, password, "db_name") as conn: with conn.cursor(as_dict=True) as cursor: # 数据存放到字典中 cursor.execute(‘SELECT * FROM persons WHERE salesrep=%s‘, ‘John Doe‘) for row in cursor: print("ID=%d, Name=%s" % (row[‘id‘], row[‘name‘]))
参考文档:
pandas系列 read_csv 与 to_csv 方法各参数详解(全,中文版)
Python 学习 第十三篇:数据的读写-文件、DataFrame、json和pymssql
原文:https://www.cnblogs.com/ljhdo/p/10572063.html