• python文件的读写


    引言:

    >最近在学习python的文件读取,学习完总结一下。paython对文件的操作不像java复杂,python没有很多流。所以操作非常简单

    内容:

    创建文件对象:open()函数用于创建文件对象,我们可以打开源码看看它的参数(如下图).很明显,第一个是文件名的路径,第二个是打开方式。基本语法就是open("文件路径","打开方式")

    如果只是文件名,代表在当前目录下的文件。当然文件名可以录入全路径,比如:D:a.txt。为了减少“”的输入,可以使用原始字符串:r“d:.txt”。文件的打开方式有如下几种:

    模式 描述
    r 读 read 模式
    w 写 write 模式。如果文件不存在则创建;如果文件存在,则重写新内容;
    a 追加 append 模式。如果文件不存在则创建;如果文件存在,则在文件末尾追加内容
    b 二进制 binary 模式(可与其他模式组合使用)
    + 读、写模式(可与其他模式组合使用)

    (1)
    文件的写入:文件的写入有两种方式。

    1、基本方式:创建文件对象--->写入数据--->关闭文件对象

    f = open("a.txt","w",encoding="utf-8") #encoding="utf-8"防止中文乱码
    f.write("我爱python")
    #f.writelines()  可以将列表的内容写入文件
    f.close()
    

    运行结果:

    对文件执行完后一定要关闭文件。因为我文件操作的底层是:当我们写代码对文件进行写入时,执行时会先调用python解释器,然后解释器调用操作系统,操作系统再对我们的硬盘进行工作。如果我们不关闭,就会有很多的资源浪费。

    2、with 语句(上下文管理器):with 关键字(上下文管理器)可以自动管理上下文资源,不论什么原因跳出 with 块,都能 确保文件正确的关闭,并且可以在代码块执行完毕后自动还原进入该代码块时的现场。所以当我们用with语句时,就可以不用用close()方法。

    with open("b.txt","w",encoding="utf-8") as f:
        f.write("努力学习!")
    

    运行结果:

    (2)
    文件的读:文件的读取一般使用以下三种方法

    1. read(size) 从文件中读取 size 个字符,并作为结果返回。如果没有 size 参数,则读取整个文件。 读取到文件末尾,会返回空字符串。
    2. readline() 读取一行内容作为结果返回。读取到文件末尾,会返回空字符串。
    3. readlines() 文本文件中,每一行作为一个字符串存入列表中,返回该列表

    按行读取:

    
    with open("c.txt","r",encoding="utf-8") as r:#encoding="utf-8"一定得写,否则会出现解码失败的问题
        while True:
            str = r.readline()
            if not str:
                break;
            else:
                print(str,end="")
    

    运行结果:

    (3)
    二进制文件的操作:只要在文本文件操作的基础上,用二进制进行读写。方法都一样(下面列个读图片的例子)

    with open("gaoyuanyuan.jpg","rb") as r:
        with open("copy.jpg","wb") as w:
            w.write(r.read())
    

    运行结果:

    结尾:
    python的文件操作简单,易上手,有成就感。

  • 相关阅读:
    SSH2练习中问题之org.apache.jasper.JasperException: /findAllProductions_list.jsp(31,1) TLD又はタグファイル中のattribute指示子に従って属性itemsはどんな式も受け付けません解决方案
    关于HibernateTempleate模版很多代码可以直接使用,是开发人员不可多得选择
    Java实现权限控制之2
    struts 之 constant
    JSTL表达式之<c:forEach>
    关于事后检查和确认
    关于删除
    jcommander 解析boolean参数
    多线程
    关于proto文件的更新
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/12461654.html
Copyright © 2020-2023  润新知