zoukankan      html  css  js  c++  java
  • Python基础【day03】:文件操作(七)

    零、本节内容

    1、文件常用操作汇总

    2、打开文件

    3、操作文件

    4、关闭文件

    一、文件常用操作汇总

    二、打开文件

    1、普通打开模式

    r,英文:read,只读模式(默认)

    w,英文:write,只写模式(不可读,不存在则创建新文件,存在则删除内容)

    a,英文:append,追加模式(不可读,不存在则创建,存在则只追加内容

    2、同时读写模式

    r+,可读写文件(可读;可写;可追加,不存在文件则报错)

    w+,可写读文件(可读,可写,创建新文件)

    a+,可追加和读文件(可读,可追加,不存在则创建)

    3、二进制打开模式

    1、rb,二进制读

    2、wb,二进制写

    3、ab,二进制追加

    三、操作文件 

    文件内容:

    1
    2
    3
    4
    Somehow, it seems the love I knew was always the most destructive kind
    不知为何,我经历的爱情总是最具毁灭性的的那种
    Yesterday when I was young
    昨日当我年少轻狂

     1、read()

    当read()函数中传入整数(int)参数,则读取相应的字符数,如果不填写,则默认读取所有字符

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    = open("yesterday2",'r',encoding="utf-8")
    #默认读取全部字符
    print(f.read())
    f.close()
    #输出
    Somehow, it seems the love I knew was always the most destructive kind
    不知为何,我经历的爱情总是最具毁灭性的的那种
    Yesterday when I was young
    昨日当我年少轻狂
     
    = open("yesterday2",'r',encoding="utf-8")
    #只读取10个字符
    print(f.read(10))
    f.close()
    #输出
    Somehow, i

    注:只有当文件有读权限时,才可以操作这个函数

    2、获取文件句柄所在的指针的位置【tell()】

    获取文件句柄所在的指针的位置

    1
    2
    3
    4
    5
    6
    7
    8
    = open("yesterday2",'r',encoding="utf-8")
    print(f.read(10))
    #获取指针位置
    print(f.tell())
    f.close()
    #输出
    Somehow, i #读取的内容
    10 #指针位置

     3、设置文件句柄所在的指针位置[seek()]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    = open("yesterday2",'r',encoding="utf-8")
    print(f.read(10))
    #设置之前的指针位置
    print(f.tell())
    f.seek(0)
    #设置之后的指针位置
    print(f.tell())
    f.close()
    #输出
    Somehow, i #读取文件的内容
    10 #设置之前的指针位置
    0 #设置之后的指针位置

     4、打印文件的编码【encoding】

    1
    2
    3
    4
    5
    = open("yesterday2",'r',encoding="utf-8")
    print(f.encoding)
    f.close()
    #输出
    utf-8

     5、fileno()

    返回文件句柄在内存中的编号

    1
    2
    3
    4
    5
    = open("yesterday2",'r',encoding="utf-8")
    print(f.fileno())
    f.close()
    #输出
    3

     6、name

    返回文件名

    1
    2
    3
    4
    5
    = open("yesterday2",'r',encoding="utf-8")
    print(f.name)
    f.close()
    #输出
    yesterday2

     7、isatty()

    判断是否是一个终端设备(比如:打印机之类的)

    1
    2
    3
    4
    5
    = open("yesterday2",'r',encoding="utf-8")
    print(f.isatty())
    f.close()
    #输出
    False #表示不是一个终端设备

     8、seekable()

     不是所有的文件都可以移动光标,比如tty文件,可以移动的,返回True

    1
    2
    3
    4
    5
    = open("yesterday2",'r',encoding="utf-8")
    print(f.seekable())
    f.close()
    #输出
    True

     9、readable()

    文件是否可读

    1
    2
    3
    4
    5
    = open("yesterday2",'r',encoding="utf-8")
    print(f.readable())
    f.close()
    #输出
    True

     10、writeable()

    文件是否可写

    1
    2
    3
    4
    5
    = open("yesterday2",'r',encoding="utf-8")
    print(f.writable())
    f.close()
    #输出
    False #文件不可写

     11、flush()

    写数据时,写的数据不想存内存中缓存中,而是直接存到磁盘上,需要强制刷新

    1
    2
    3
    4
    5
    6
    >>> f = open("yesterday2","w",encoding="utf-8")
    #这时'hello word'在缓存中
    >>> f.write("hello word")
    10
    #强刷到磁盘上
    >>> f.flush()

     这个怎么实验呢?在cmd命令行中,cd到你文件所在的路径下,然后输入python,在Python命令行中输入上面代码

    ①cd d:PycharmProjectspyhomeworkday3下(因为我的被测文件在这个文件夹下)

    ②在这个目录下输入Python命令行,然后进行测试

    ③强制刷新之前

     ④执行强刷命令之后

     

    ⑤强刷后文件中的内容变化

     

    注:以写的模式打开文件,写完一行,默认它是写到硬盘上去的,但是其实它不一定写到硬盘上去了。当你刚写完一行,如果此时断电,有可能,你这行就没有写进去,因为这一样还在内存的缓存中(内存中的缓存机制),所以你有不想存缓存,所以就要强制刷新。那一般在什么情况下用呐?比如:存钱

    12、closed

    判断文件是否关闭

    1
    2
    3
    4
    5
    = open("yesterday2","r",encoding="utf-8")
    f.read()
    print(f.closed)
    #输出
    False

     13、truncate(截取字符的数)

    截取文件中的字符串,打开文件模式一定是追加模式(a),不能是写(w)和读(r)模式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #没有指针
    = open("yesterday2","a",encoding="utf-8")
    f.truncate(10)
    f.close()
    #截取结果
    Somehow, i
     
    #有指针
    = open("yesterday2","a",encoding="utf-8")
    f.seek(5)
    f.truncate(10)
    f.close()
    #截取结果
    Somehow, i

     说明truncate截取文件中的字段,并不受指针(seek)所在位置影响。

    14、write()

    写入文件内容

    1
    2
    3
    = open("yesterday2","w",encoding="utf-8")
    f.write("Somehow, it seems the love I knew was always the most destructive kind")
    f.close()

     注:写功能只有当打开文件模式是写(w)或者追加(a)才可操作。

    四、关闭文件

     

  • 相关阅读:
    Oracle进程
    Oracle 内存管理
    oracle 数据文件管理
    Oracle表空间
    EM配置问题
    Oracle 常用命令
    Oracle体系结构
    Orcale 数据加载
    Oracle学习笔记(1)
    设计模式-23种参考模式
  • 原文地址:https://www.cnblogs.com/luoahong/p/7159876.html
Copyright © 2011-2022 走看看