• Python--文件的基本操作


    #!/usr/bin/env  python
    # -*- coding: utf-8 -*-
    # ******************************一:文件的操作******************************
    # 1. 打开文件,得到文件句柄并赋值给一个变量
    # 2. 通过句柄对文件进行操作
    # 3. 关闭文件
    # 注意:open()一个文件也就是创建了一个对象,把这个对象赋值给变量f,这样变量f文件之间就建立了引用关系
    # f = open("a.txt","r")   #打开文件,得到文件句柄并赋值给一个变量;文件路径可以是绝对路径也可以是相对路径
    # data = f.read()                             #通过句柄对文件进行操作
    # f.close()                                   #关闭文件
    
    # ******************************二:文件的打开方式******************************
    # 1.文件的打开方式(默认为文本模式t):
    #               r   以读模式打开文件
    #               w   以写模式打开文件;如果文件存在,则清空文件,再写入新内容;如果文件不存在则创建文件
    #               a   以追加模式打开文件(打开文件后,文件光标自动跳转到文件末尾),如果文件不存在则创建文件;注意追加模式下只能进行写操作
    # f1 = open("f1.txt","r")        #文件不存在则报错
    # f1.close()
    # f2 = open("f2.txt","w")        #文件不存在则创建
    # f2.close()
    # f3 = open("f3.txt","a")        #文件不存在则创建
    # f3.close()
    
    # 2.非文本文件打开方式:只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的
    # 字符编码、图片文件的jgp格式、视频文件的avi格式)
    # 注意:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
    #               b   以二进制模式打开文件,而不是以文本模式
    # f = open("a.txt","rb")
    # data = f.read()
    # f.close()
    # print(data)
    
    # 3.读写模式打开文件:
    #               r+  以读写方式打开文件,可对文件进行读和写操作
    #               w+  清除文件内容,然后以读写方式打开文件
    #               a+  以读写方式打开文件,并将文件光标移到到文件末尾
    
    # ******************************三:文件的读和写******************************
    # 1.read():读取文件内容,并返回一个字符串
    # f = open("a.txt","r",encoding="utf-8")     #以指定的编码格式来编码(打开)文件
    # data = f.read()         #读取所有内容,光标移动到文件末尾
    # f.seek(0)               #将文件光标移动到开始位置
    # data1 = f.read(10)      #read(n),n是字符数,可以指定读取多少个字符
    # f.close()
    # print(data,data1)
    
    # f1 = open("a.txt","rb")     #b模式下读文件;注意:win操作系统下换行符是:
    
    # data2 = f1.read()
    # f1.close()
    # print(data2)
    # print(data2.decode("utf-8"))    #b模式下查看文件内容,将字节解码为字符串查看
    
    # 注意:字符串(内存)------编码encode------字节(硬盘)
    # 字节(硬盘) ------解码decode------字符串(内存)
    
    # 2.readable():文件是否是可读的,返回布尔值
    # f = open("a.txt","r",encoding="utf-8")
    # data = f.readable()
    # f.close()
    # print(data)
    
    # 3.readline():读取一行内容,光标移动到第二行开始
    # f = open("a.txt","r",encoding="utf-8")
    # data = f.readline()             #读取一行内容,光标移动到第二行开始
    # data1 = f.readline(4)           #readline(n),n是字符数,可以指定读取该行多少个字符
    # f.close()
    # print(data)
    # print(data1)
    
    # 4.readlines():读取文件中每一行内容,将结果返回一个列表
    # f = open("a.txt","r",encoding="utf-8")
    # data = f.readlines()
    # f.close()
    # print(data)
    
    # 5.write():以字符串的形式写入内容;写入内容时不会添加换行符,需要手动添加
    # f = open("a.txt","w",encoding="utf-8")
    # f.write("1111111111
    222
    333
    中国
    ")
    # f.close()
    
    # f1=open("b.txt","wb")
    # #字符串的encode()方法:将字符串编码为字节
    # f1.write("1111
    222
    ".encode('utf-8'))      #b模式中的写,需要指定编码格式,将字符串转换为字节写入;字符串需要手动添加换行符
    # #bytes函数:将字符串编码为字节
    # f1.write(bytes("11112222
    ",encoding ="utf-8"))
    # f1.close()
    
    # 注意:字符串(内存)------编码encode------字节(硬盘)
    # 字节(硬盘) ------解码decode------字符串(内存)
    
    # 6.writeable():文件是否是可写的,返回布尔值
    # f = open("a.txt","w",encoding="utf-8")
    # f.writable()
    # f.close()
    
    
    # 7.writelines():以列表的形式写入内容;列表元素需要手动添加换行符
    # f = open("a.txt","w",encoding="utf-8")
    # f.writelines(["111
    ","中国
    "])
    # f.close()
    
    
    # 8.closed():文件是否是关闭的,返回布尔值
    # f = open("a.txt","w",encoding="utf-8")
    # data = f.closed
    # f.close()
    # print(data)
    
    # ******************************四:文件内光标移动******************************
    # 光标移动:文件的读和写操作都会使得光标进行移动,比如你read()完文件后,再次read()会获取不到文件内容,因为文件的光标已经在第一次read()时移动到文件末尾了
    # 注意1:除了read(n)方法光标是以字符进行的,其余的文件内光标移动都是以字节为单位如seek,tell,truncate
    #           read(3):文件打开方式为文本模式时,代表读取3个字符;文件打开方式为b模式时,代表读取3个字节
    # 注意2:文本文件在不同操作系统中换行符是不一样的,python再次处理时会将不同的换行符转换为
    ,使用newline=""可以显示不转换前的换行符;
    #       在tell()时,换行符
    为两个字节
    # f = open("test.txt", "r+", encoding="utf-8")
    # print(f.readlines())
    # f1 = open("test.txt", "r+", encoding="utf-8",newline="")
    # print(f1.readlines())
    
    # 1.tell():查看文件当前光标的位置(以字节为单位)
    # f = open("a.txt", "r+", encoding="utf-8")
    # print(f.tell())
    # f.readline()
    # print(f.tell())
    
    # 2.seek():控制光标移动字节数
    #             seek(a,b)     a控制移动的字节数,b = 0(默认为0),表示从文件开头开始计算移动
    #                                            b = 1,表示从当前光标开始计算移动,此时a为正数表示向后移动;反之则向前移动
    #                                            b = 2,表示从文件末尾开始计算移动
    # 注意:只有在b模式下,seek()才可以从后向前开始向前移动
    # f = open("test.txt", "rb")
    # print(f.tell())
    # f.readlines()
    # f.seek(-5,2)
    # print(f.tell())
    
    # ******************************五:文件的其他注意事项******************************
    # 1.文件的打开方式有两种:
    # (1).将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)
    # (2).将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖原来的文件
    # 注意:1.以文本模式打开文本文件时,注意要以指定的编码格式来打开文件,该编码格式应该与该文件在内存中加载的编码格式一致
    # 注意:2.open()函数会检索当前操作系统的编码方式,而不是文件自身的编码方式;open()打开文件默认是r模式
    # 注意:3.读和写文件的内容必须都是字符串
    
    # 2.encoding:取文件打开的编码
    # f = open("a.txt","w",encoding="utf-8")
    # print(f.encoding)
    
    # 3.flush():用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区;
    # 一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法;
    # 即就是更改文件内容后,先关闭文件再重新打开文件文件更改才会看到变换
    # f = open("f3.txt","w+",encoding="utf-8")
    # f.writelines(["我爱你中国
    ","66666
    "])
    # f.flush()
    # f.close()
    
    # 4.truncate():文件的截断(写模式进行);无n表示从当前位置截断;截断之后后面的所有字节被删除
    # f1 = open("a1.txt","r+",encoding="utf-8")
    # f1.truncate(3)       #truncate(n),从文件的首行首字节开始截断n个字节,只要截取部分,其他部分所有字节被删除
    # print("a1:",f1.read())
    # f1.close()
    #
    # f2 = open("a2.txt","r+",encoding="utf-8")
    # f2.seek(8)
    # f2.truncate()       #截断从开头到当前光标位置的内容
    # print("a2:",f2.read())
    # f2.close()
    
    # 5.with打开文件时,可以不关闭文件
    # with open("test.txt","a+",encoding="utf-8") as f:
    #     f.write("world
    ")
    #     print(f.read())
    文件
    为了将来做自己想做的事情努力.......
  • 相关阅读:
    《深入理解java虚拟机》第二章:Java内存区域与内存溢出异常-20210716
    mongodb 占用内存及解决方法
    JDK常用分析工具
    mysql表碎片清理和表空间收缩
    Java Array 和 String 的转换
    Discourse 如何查看自己发布的主题
    Discourse 用户的邮件无法投递的时候如何处理
    IntelliJ IDEA 如何在 Java 中进行快速注释
    Java Arrays.asList 和 new ArrayList(Arrays.asList()) 的对比
    Druid 加载 Kafka 流数据的 索引属性(IndexSpec)
  • 原文地址:https://www.cnblogs.com/shichenyang/p/11828756.html
Copyright © 2020-2023  润新知