• Python基础8_文件处理


    一. 初始文件操作
    使用open()函数来打开文件,获取到文件句柄
    f = open("文件名", mode = "模式", encoding = "utf-8")
    encoding表示编码集,根据文件的实际保存编码进行获取数据,我们多用utf-8
    绝对路径和相对路径:
    绝对路径:从磁盘根目录开始一直到文件名 d:文件夹文件名
    相对路径:相对于当前程序所在的文件夹,如果在同一个文件夹内,则相对路径就是这个文件名,如果不在同一个文件夹,则要退出文件夹(../),再进入文件夹(文件夹/)
    推荐用相对路径,因为把程序拷贝给别人使用的时候,直接把项目拷贝走就行,但是如果用绝对路径,那还需要拷贝外部的文件
    二. 只读操作(r,rb)
    rb. 读取出来的数据类型是bytes类型,在rb模式下,不能选择encoding字符集
    在读取非文本文件的时候,比如读取MP3.图像.视频等信息的时候就需要用到rb,因为这种数据是没办法直接显示出来的,在后面我们文件上传下载的时候还会用到
    读取文件的方法:
    1. f.read() 将文件中的内容全部读取出来, 弊端:占内存,如果文件过大,容易导致内存崩溃
    2. f.read(n) 读取n个字符,需要注意的是,如果再次读取,那么会在当前位置继续去读而不是从头开始,如果使用的是rb模式,则读取出来的是n个字节
    3. f.readline() 一次读取一行数据, 注意:每次读取出来的数据都会有一个 ,所以需要我们使用strip()方法来去掉 或者空格
    4. f.readlines() 将每一行形成一个元素放到一个列表中,将所有的数据都读取出来,所以也会出现内存崩溃的问题
    5. 循环读取 这种方法是最好的,每次读取一行内容,不会产生内存溢出的问题
    注意:读取玩的句柄一定要关闭 f.close()
    三. 只写模式(w,wb)
    写的时候,如果没有文件,则会创建文件,如果文件存在,则将源文件中的内容删除,再写入新内容
    wb模式下,可以不指定打开文件的编码,但是在写文件的时候必须将字符串转换成utf-8的bytes数据类型 f.write("内容", encode("utf-8))
    四. 追加(a,ab)
    在追加模式下,我们写入的内容会追加在文件的结尾
    五. 读写模式(r+,r+b)
    对于读写模式,必须是先读,因为默认光标是在开头的准备读取的,当读取完了之后再进行写入,我们以后使用高的模式是r+
    正常的读取之后,写在结尾
    六. 写读模式(w+,w+b)
    先将所有的内容清空,然后写入,最后读取,但是读取的内容时空的,不常用
    七. 追加读(a+)
    不论先读还是先写,都是读取不到数据的
    八. 其他相关的操作
    1. f.seek(n) 光标移动n个字节,所以如果是utf-8的中文,是3的倍数
    seek(num1,num2) num1表示偏移量,num2表示从哪个位置进行偏移,默认是0,表示开头,1表示当前位置,2表示结尾
    2. f.tell() 获取当前光标所在的位置 单位也是字节
    3. f.truncate() 截取文件
    如果想要截断操作,要先挪动光标,挪动到想要截断的位置,再进行截断
    注意:在r+模式下,如果读取了内容,不论读取内容多少,光标显示的是多少,再写入或者操作文件的时候都是在结尾进行的操作
    九. 修改文件以及另一种打开文件的方式
    文件修改:只能讲文件中的内容读取到内存中,将信息修改完毕,然后将源文件删除,将新文件的名字改成老文件的名字
    import os
    os.remove()
    os.rename()
    弊端:一次将所有的内容读取,内存溢出,解决方案,一行一行的读取和操作
    for line in f:

  • 相关阅读:
    云平台架构架构调整路线图
    python3生成测试数据,并写入ssdb
    关于因各种原因,造成LINUX主机不能通过域名访问自己的解决办法
    学习OpenResty编程
    在WINDOWS2008 Server 中创建NFS服务器,使用LINUX的MOUNT命令去加载网络盘
    云平台资源挂盘办法V1.2
    VMware安装Centos7超详细过程(图文)
    VMware配置网络的3种方式:NAT、Host-Only、Bridged
    vmware12安装centos7系统详解
    AMQP && MQTT comparision
  • 原文地址:https://www.cnblogs.com/guyannanfei/p/10073499.html
Copyright © 2020-2023  润新知