美文网首页
python读写数据文件

python读写数据文件

作者: 小小孩儿的碎碎念 | 来源:发表于2020-01-27 23:20 被阅读0次

    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()
    

    参考:
    一文搞懂Python文件读写
    n种方式教你用python读写excel等数据文件
    python 连接各类主流数据库简单示例

    相关文章

      网友评论

          本文标题:python读写数据文件

          本文链接:https://www.haomeiwen.com/subject/lrcethtx.html