zoukankan      html  css  js  c++  java
  • 文件的操作

    open() 打开文件,默认只读模式,赋值时存一个文件句柄(内存对象,记录了该文件的一些属性,名字,位置,大小等)

      r: 只读

      w: 只写,新建文件,覆盖之前的同名文件

      a: 追加,往内容末尾写

      r+: 读写,这里的写只能往末尾写

      w+: 写读,这里的写是新建文件,同样只能往末尾写

      a+: 追加读写

      rb: 二进制文件的读写

    read() 读文件,可加入参数指定读取内容的长度

    >>> f = open('today.txt')
    >>> f.read()
    '今天星期五啦
    明天好好休息,加油!'

    write() 写文件  w模式会新建文件再写入,会覆盖之前的文件;a模式在原文件上的末尾追加内容

    >>> f = open('today.txt', 'w')
    >>> f.write('明天周一,加油!')
    8
    >>> f.close()
    >>> f = open('today.txt')
    >>> f.read()
    '明天周一,加油!'
    >>> f.close()
    
    >>> f = open('today.txt', 'a')
    >>> f.write('我要努力努力再努力!')
    10
    >>> f.close()
    >>> f = open('today.txt')
    >>> f.read()
    '明天周一,加油!我要努力努力再努力!'

     readline() 读一行

    >>> f = open('today.txt', 'r')
    >>> f.readline()
    '明天周一,加油!我要努力努力再努力!'

    readlines() 把内容转为列表,各行内容作为列表中的元素

    >>> f = open('today.txt', 'r')
    >>> f.readlines()
    ['明天周一,加油!我要努力努力再努力!']

    遍历每行的两种方法

    >>> for i in f.readlines():
    ...   print(i)
    ...
    明天周一,加油!我要努力努力再努力!
    
    今天周一,我在继续努力!
    
    明天周二,我争取更努力!
    
    >>> for i in f:   # 这个方法比上面的性能高,因为f就是一个迭代器
    ...   print(i)
    ...
    明天周一,加油!我要努力努力再努力!
    
    今天周一,我在继续努力!
    
    明天周二,我争取更努力

    tell() 返回当前文件句柄的指针位置

    >>> f = open('today.txt', 'r')
    >>> f.read(2)
    '明天'
    >>> f.tell()
    4

    seek() 把文件句柄的指针移到指定位置

    >>> f = open('today.txt', 'r')
    >>> f.seek(4)
    4
    >>> f.read()
    '周一,加油!我要努力努力再努力!
    今天周一,我在继续努力!
    明天周二,我争取更努力!'

    encoding  返回文件的编码

    >>> f = open('today.txt', 'r')
    >>> f.encoding
    'cp936'

    fileno() 文件句柄的编号(在IO接口中)

    name 文件名

    isatty() 是否为一个终端设备

    seekable() 是否可以移动文件指针,终端设备文件移不了

    readable() 是否可读

    writeable() 同理

    flush() 刷新(把内存中的缓存写入磁盘里,写文件时,先放到内存中的缓存中,等到缓存一定内容时,再写入硬盘)。

    进度条

    import sys, time
    for i in range(100):
        sys.stdout.write('*') # sys.stdout.write与print的区别是继续打印不换行
        sys.stdout.flush()
        time.sleep(0.1)

    truncate() 从头开始截取内容(不受文件句柄指针的影响),不指定长度时,会清空文件内容

    >>> f = open('today.txt', 'a')
    >>> f.truncate(10)
    >>> f.close()
    >>> f = open('today.txt', 'r')
    >>> f.read()
    '明天周一,'

    修改文件的方法:

    1.像vim那样,先把文件读到内存中,再改。(文件大的时候,占用内存大,不推荐!)

    2.边改边写到新的文件。(逐行读第一个文件,(修改)写入另一个文件)

    with语句  执行完自动close, 支持多文件一起close

    >>> with open('today.txt', 'r') as f:
    ...   f.read()
    ...
    '明天周一,'
    
    with open('log1') as f1, open('log2') as f2:  # 多文件操作,逗号隔开
      pass
  • 相关阅读:
    c++设计模式总结
    Java复习(四)类的重用
    Java复习(三)类中的方法
    Java复习(二)类与对象的基本概念
    Java复习(一)——Java语言概述、开发环境、基础知识
    Java复数的加乘除运算
    人见人爱A+B
    noj快排
    noj最长公共子序列
    C语言里有没有sort函数?有!
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/8647769.html
Copyright © 2011-2022 走看看