python调用文件对象所提供的读取数据的函数_python读写数据文件

1. read、readline、readlines

(1)open函数

如果你想用python读取文件(如txt、csv等),第一步要用open函数打开文件。

open()是python的内置函数,它会返回一个文件对象,这个文件对象拥有read、readline、write、close等方法。

open函数有两个参数:

open('file','mode')

mode常用的模式:

r:表示文件只能读取

w:表示文件只能写入

a:表示打开文件,在原有内容的基础上追加内容,在末尾写入

w+:表示可以对文件进行读写双重操作

mode参数可以省略不填,默认为r模式

mode参数还可以指定以什么样的编码方式读写文本,默认情况下open是以文本形式打开文件的,比如上面的四种mode模式。

当你需要以字节(二进制)形式读写文件时,只需要在mode参数中追加'b'即可:

rb:以二进制格式打开一个文件,用于只读

wb:以二进制格式打开一个文件,用于只写

ab:以二进制格式打开一个文件,用于追加

wb+:以二进制格式打开一个文件,用于读写

当在默认模式下读取文本文件时(二进制文件不可以),文件中的换行符会转换为'\n'形式

相反,在默认模式下写入文件时,文本中的'\n'会转换为换行符。

也就是说,你读取的txt文本,其中换行符会以'\n'形式出现,写入txt文本时,文本中的'\n'会变成换行指令。

with 关键字

在打开文件时,最好使用 with 关键字。优点是当子句体结束后文件会正确关闭,即使在某个时刻引发了异常。

>>> with open('workfile') as f:

... read_data = f.read()

>>> f.closed

True

(2)close方法

打开文件并处理完毕后,需要关闭文件,这里用到close方法。

f.close() 用来关闭文件并立即释放它使用的所有系统资源。

如果你没有显式地关闭文件,Python的垃圾回收器最终将销毁该对象并为你关闭打开的文件,但这个文件可能会保持打开状态一段时间。

f = open(file) # 打开文件

f.close() # 关闭文件

(3)read方法

一次性读取整个文件内容。推荐使用read(size)方法,size越大运行时间越长

当使用open函数打开文件后,就可以使用该文件对象的各种方法了,read就是其中一种。

read()会读取一些数据并将其作为字符串(在文本模式下)或字节对象(在二进制模式下)返回。

read方法有一个参数:

f.read(size) # f为文件对象

注:参数size(可选)为数字,表示从已打开文件中读取的字节计数,默认情况下为读取全部。

eg:假设有一个文件sample1.txt,内容如下:

This is python big data analysis!

现在读取该文件:

with open('sample1.txt') as f:

content = f.read()

print(content)

f.close()

输出:

This is python big data analysis!

(4)readline方法

每次读取一行内容。内存不够时使用,一般不太用

readline方法从文件中读取整行,包括换行符'\n'。

换行符(\n)留在字符串的末尾,如果文件不以换行符结尾,则在文件的最后一行省略,这使得返回值明确无误。

如果 f.readline() 返回一个空的字符串,则表示已经到达了文件末尾,而空行使用 '\n' 表示,该字符串只包含一个换行符。

f.readline()有一个参数:

f.readline(size)

注:参数size表示从文件读取的字节数。

假设有一个文件sample2.txt,共三行,内容如下:

hello,my friends!

This is python big data analysis,

let's study.

要用readline函数读取该文件:

with open('a.txt') as f:

print(f.readline())

print(f.readline(5))

f.close()

输出:

hello,my friends!

This

readline方法会记住上一个readline函数读取的位置,接着读取下一行。所以当需要遍历文件每一行的时候,可以使用readline方法

(5)readlines方法

一次性读取整个文件内容,并按行返回到list,方便我们遍历

readlines方法和readline方法长得像,但功能不一样,前面说过readline方法只读取一行,readlines方法则是读取所有行,返回的是所有行组成的列表。

readlines方法没有参数,使用更加简单

依旧以sample2.txt为例

with open('a.txt') as f:

print(f.readlines())

f.close()

输出:

[ 'hello,my friends!\n,'This is python big data analysis,\n',''let's study.\n'']

(6)write方法

write方法顾名思义,就是将字符串写入到文件里。

它只有一个参数:

f.write([str]) # f为文件对象

参数[str]代表要写入的字符串

使用起来也很简单,比如将下面字符串

'hello,my friends!\nthis is python big data analysis'

写入到文件sample3.txt里

with open('sample3.txt','w') as f:

f.write('hello,my friends!\nthis is python big data analysis')

f.close()

输出:

hello,my friends!

This is python big data analysis

2. 内置模块csv

csv模块读取文件

import csv

with open('test.csv','r') as myFile:

lines=csv.reader(myFile)

for line in lines:

print (line)

csv模块写入文件

import csv

with open('test.csv','w+') as myFile:

myWriter=csv.writer(myFile)

myWriter.writerow([7,8,9]) # writerow一行一行写入

myWriter.writerow([8,'h','f'])

myList=[[1,2,3],[4,5,6]] # writerows多行写入

myWriter.writerows(myList)

3. numpy库

loadtxt方法

loadtxt用来读取文本文件(包含txt、csv等)以及.gz 或.bz2格式压缩文件,前提是文件数据每一行必须要有数量相同的值。

import numpy as np

np.loadtxt('test.csv',dtype=str)# loadtxt()中的dtype参数默认设置为float,这里设置为str字符串便于显示

load方法

load用来读取numpy专用的.npy, .npz 或者pickled持久化文件。

import numpy as np

np.save('test.npy', np.array([[1, 2, 3], [4, 5, 6]]))# 先生成npy文件

np.load('test.npy')# 使用load加载npy文件

fromfile方法

fromfile方法可以读取简单的文本数据或二进制数据,数据来源于tofile方法保存的二进制数据。读取数据时需要用户指定元素类型,并对数组的形状进行适当的修改

import numpy as np

x = np.arange(9).reshape(3,3)

x.tofile('test.bin')

np.fromfile('test.bin',dtype=np.int)

4. pandas库

read_csv方法

read_csv方法用来读取csv格式文件,输出dataframe格式

import pandas as pd

pd.read_csv('test.csv')

read_excel方法

读取excel文件,包括xlsx、xls、xlsm格式

import pandas as pd

pd.read_excel('test.xlsx')

read_json方法

读取json格式文件

df = pd.DataFrame([['a', 'b'], ['c', 'd']],index=['row 1', 'row 2'],columns=['col 1', 'col 2'])

j = df.to_json(orient='split')

pd.read_json(j,orient='split')

read_table方法

通过对sep参数(分隔符)的控制来对任何文本文件读取

read_html方法

读取html表格

read_clipboard方法

读取剪切板内容

read_pickle方法

读取plckled持久化文件

read_sql方法

读取数据库数据,连接好数据库后,传入sql语句即可

read_dhf方法

读取hdf5文件,适合大文件读取

read_parquet方法

读取parquet文件

read_sas方法

读取sas文件

read_stata方法

读取stata文件

read_gbq方法

读取google bigquery数据

5、读写excel文件

python用于读写excel文件的库有很多,除了前面提到的pandas,还有xlrd、xlwt、openpyxl、xlwings等等

xlrd库

从excel中读取数据,支持xls、xlsx

xlwt库

对excel进行修改操作,不支持对xlsx格式的修改

xlutils库

在xlw和xlrd中,对一个已存在的文件进行修改

openpyxl

主要针对xlsx格式的excel进行读取和编辑

xlwings

对xlsx、xls、xlsm格式文件进行读写、格式修改等操作

xlsxwriter

用来生成excel表格,插入数据、插入图标等表格操作,不支持读取

Microsoft Excel API

需安装pywin32,直接与Excel进程通信,可以做任何在Excel里可以做的事情,但比较慢

6. 操作数据库

python几乎支持对所有数据库的交互,连接数据库后,可以使用sql语句进行增删改查。

pymysql

用于和mysql数据库的交互

sqlalchemy

用于和mysql数据库的交互

cx_Oracle

用于和oracle数据库的交互

sqlite3

内置库,用于和sqlite数据库的交互

pymssql

用于和sql server数据库的交互

pymongo

用于和mongodb非关系型数据库的交互

redis、pyredis

用于和redis非关系型数据库的交互

7、python连接MySQL数据库

(1)安装PyMySQL库

在命令行输入 pip install pymysql

(2)安装MySQL数据库

MySQL数据库类型有两种:MySQL和MariaDB,两者在绝大部分性能上是兼容的,区别不大

(3)SQL基本语法

查看数据库:SHOW DATABASES;

创建数据库:CREATE DATEBASE 数据库名称;

使用数据库:USE 数据库名称;

查看数据表:SHOW TABLES;

创建数据表:CREATE TABLE 表名称(列名1 (数据类型1),列名2 (数据类型2));

插入数据:INSERT INTO 表名称(列名1,列名2) VALUES(数据1,数据2);

查看数据:SELECT * FROM 表名称;

更新数据:UPDATE 表名称 SET 列名1=新数据1,列名2=新数据2 WHERE 某列=某数据;

(4)连接数据库

#首先导入PyMySQL库

import pymysql

#连接数据库,创建连接对象connection

#连接对象作用是:连接数据库、发送数据库信息、处理回滚操作(查询中断时,数据库回到最初状态)、创建新的光标对象

connection = pymysql.connect(host = 'localhost' #host属性

user = 'root' #用户名

password = '******' #此处填登录数据库的密码

db = 'mysql' #数据库名

)

(5)使用python代码操作MySQL数据库

首先来查看一下有哪些数据库:

#创建光标对象,一个连接可以有很多光标,一个光标跟踪一种数据状态。

#光标对象作用是:、创建、删除、写入、查询等等

cur = connection.cursor()

#查看有哪些数据库,通过cur.fetchall()获取查询所有结果

print(cur.fetchall())

在test数据库里创建表:

#使用数据库test

cur.execute('USE test')

#在test数据库里创建表student,有name列和age列

cur.execute('CREATE TABLE student(name VARCHAR(20),age TINYINT(3))')

向数据表student中插入一条数据:

sql = 'INSERT INTO student (name,age) VALUES (%s,%s)'

cur.execute(sql,('XiaoMing',23))

查看数据表student内容:

cur.execute('SELECT * FROM student')

print(cur.fetchone())

最后,要记得关闭光标和连接:

#关闭连接对象,否则会导致连接泄漏,消耗数据库资源

connection.close()

#关闭光标

cur.close()

8、python连接Oracle数据库

(1)下载安装外包cx_Oracle,方式:在命令行输入 pip install cx_Oracle

(2)连接

conn = oracle.connect('username/password@host:port/sid')#分别填用户名/密码/数据库所在IP地址:port/sid

(3)获取光标对象curser

cur = conn.cursor()

(4)使用cursor进行各种操作

cur.execute(sql语句)

(5)关闭cursur、conn

cursor.close()

conn.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值