美文网首页python
[Pt_06] Python对文件的读写处理

[Pt_06] Python对文件的读写处理

作者: Fighting_001 | 来源:发表于2018-06-26 23:30 被阅读0次

    目录结构

    一、Python文件处理方式
        1.打开文件
        2.文件读写
        3.关闭文件
    二、Python读取&写入txt文件
        1.读取txt文件
        2.写入txt文件
    三、Python读取&写入csv文件
        1.csv文件读取
        2.csv文件写入
    

    一、Python文件处理方式

    # 打开指定文件
    # r表示read(读取);f表示“句柄”,通过其可对文件进行操作
    f=open(r"D:\CI_Env\Python_Test\file\001.txt","r")
    # 读取文件
    data=f.read()
    # 输出文件中的数据
    print(data)
    # 关闭文件
    f.close()
    

    磁盘IO:对磁盘中持久化文件(不因关闭系统而消失)的读&写操作
    读:将磁盘中的文件数据加载到程序中使用
    写:将程序中生成的数据写入磁盘中保存

    PS:文件读写操作完成之后,需要关闭文件IO资源,否则会占用系统内存,对性能不利

    1.打开文件

    使用Python内置的open()方法打开文件
    file object = open(file_name [, access_mode][, buffering])
    参数说明:

    file_name:所要访问路径的文件名
    access_mode:打开文件的模式(只读、写入、追加...),非必填,默认文件访问模式为“只读”(r)
    buffering:代表寄存、缓冲。
    1)取值=0,不会有寄存;
    2)取值=1,访问文件时会寄存行;
    3)取值>1,表明该取值就是及存取的缓冲大小;
    4)取值<0,寄存区的缓冲大小为系统默认值
    

    以只读方式打开txt文本,第一种情况为txt文本与脚本在同一目录,第二种情况为txt文本与脚本不在同一目录(需要用转移符进行转义绝对路径)
    f = open('stu_info.txt','r')
    f = open('X:\\test\\stu_info.txt','r')

    常用文件的打开模式

    模式 描述
    r 以只读模式打开文件
    rb 以二进制格式打开一个文件,且用于只读
    w 打开一个文件只用于写入
    a 打开一个文件用于追加。新的内容会被写入到已有内容之后;若该文件不存在,则会创建新文件进行写入

    2.文件读写

    # 打开指定文件
    # r表示read(读取);f表示“句柄”,通过其可对文件进行操作
    f=open(r"D:\CI_Env\Python_Test\file\001.txt","r")
    
    # 读取整个文件
    data = f.read()
    
    # 按行读取文件(一次读取一行)
    data = f.readline()
    
    # 按行读取整个文件,将读取的内容存储在列表中,每一行作为一个元素
    data = f.readlines()
    # 输出data列表
    print(data)
    # 依次从列表中打印每个元素
    for i in range(len(data)):
        print(data[j])
    
    # 适合大文件读取(每读取一行就输出一行)
    for j in f:
        print(i)
    

    方法说明:
    read():每次读取整个文件,常用于将文件内容放到一个字符串变量中
    readline():每次只读取一行
    readlines():一次性读取文件的所有行,自动将文件内容解析为一个行的列表,该列表可以由for...in...结构进行处理

    3.关闭文件

    有打开文件,当文件处理完成之后,同时也需要关闭文件
    f.close()

    二、Python读取txt文件

    1.读取txt文件

    案例1:读取stu_info.txt文本中的内容,将文本中的所有学生名字显示出来

    # 创建文件对象f,以只读方式打开txt文本
    f = open('stu_info.txt','r')
    # 一次性读取该文件中的所有行,解析成一行的列表,将文件内容存放到变量lines中
    lines = f.readlines()
    # 打印出该变量中的列表
    print(lines)
    
    # 遍历变量lines中存放的所有内容
    # 根据','识别进行分隔输出第一个','前的信息
    for line in lines:
        print(line.split(',')[0])
    

    输出结果:
    ['Jack,25,Beijing\n', 'Harry,22,Shanghai\n', 'Bob,28,Guangdong']
    Jack
    Harry
    Bob

    备注:
    print(line.split(',')[1]),则输出的是所有学生年龄
    print(line.split(',')[2]),则输出的是所有学生的地区

    案例2:读取stu_info.txt文本中的内容,将文本中的所有学生的信息(名字、年龄、地区)都显示出来

    f = open('Stu_info.txt','r')
    lines = f.readlines()
    print(lines)
    
    for line in lines:
        n = 0
        while n <= 2:
            print(line.split(',')[n])
            n = n + 1
    

    输出结果:
    ['Jack,25,Beijing\n', 'Harry,22,Shanghai\n', 'Bob,28,Guangdong']
    Jack
    25
    Beijing

    Harry
    22
    Shanghai

    Bob
    28
    Guangdong

    2.写入txt文件

    # 以写入方式打开一个文件;写入方式:覆盖写入or新建写入
    f=open(r"D:\CI_Env\Python_Test\file\002.txt","w")
    
    # 向打开的文件中写入指定内容
    data="Hello 2019!"
    f.write(data)
    
    # 关闭文件
    f.close()
    
    # 以追加写入方式打开文件
    f=open(r"D:\CI_Env\Python_Test\file\002.txt","a")
    data="Keep the Faith"
    f.write(data)
    f.close()
    

    三、Python读写csv文件

    1.csv文件读取

    案例:读取Stu_info.csv文件里所有学生信息

    import csv
    # 读取csv文件中每行的列表,将每行读取的值作为列表返回
    csv_file = csv.reader(open('Stu_info.csv','r'))
    print(csv_file)  # 此时输出的是内存地址
    
    for stu in csv_file:
        print(stu)
    

    输出结果:
    <_csv.reader object at 0x01464AB0>
    ['Caddy', '26', 'Chengdu']
    ['Rom', '20', 'Chongqing']
    若只是输出csv文件中的第1列(A列),则用print(stu[0])

    2.csv文件写入

    import csv
    # 实现对Stu_info.csv文件追加写入两个学生信息
    stu1 = ['Harry',28,'Changsha']
    stu2 = ['Bob',25,'Shenzhen']
    # 以newline=''打开csv文件进行追加,newline可避免空行
    out = open('Stu_info.csv','a',newline='')
    #设定写入模式
    csv_write = csv.writer(out,dialect='excel')
    #写入具体内容
    csv_write.writerow(stu1)
    csv_write.writerow(stu2)
    

    输出结果:
    Process finished with exit code 0


    若打开csv文件时以open('Stu_info.csv','w',newline=''),则会把新写入的数据覆盖csv文件中原来存在的数据。

    3.对二进制文件的读取&写入

    # 实现:复制
    # 以读取二进制文件方式打开指定文件
    f1=open(r"D:\CI_Env\Python_Test\file\11.jpg","rb")
    # 读取文件数据内容
    data=f1.read()
    
    # 实现:粘贴
    # 以写入二进制方式打开指定文件
    f2=open(r"D:\CI_Env\Python_Test\file\22.jpg","wb")
    # 写入以上读取到的文件数据内容
    f2.write(data)
    # 关闭文件
    f1.close()
    f2.close()
    

    相关文章

      网友评论

        本文标题:[Pt_06] Python对文件的读写处理

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