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)才可操作。

    四、关闭文件

     

  • 相关阅读:
    二分图最大匹配的König定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/luoahong/p/7159876.html
Copyright © 2011-2022 走看看