zoukankan      html  css  js  c++  java
  • 2 [文件]-文件操作

    1.文件操作

      def fileno(self, *args, **kwargs): # real signature unknown
            返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到
    
        def flush(self, *args, **kwargs): # real signature unknown
            把文件从内存buffer里强制刷新到硬盘
    
        def readable(self, *args, **kwargs): # real signature unknown
            判断是否可读
    
        def readline(self, *args, **kwargs): # real signature unknown
            只读一行,遇到
     or 
    为止
    
        def seek(self, *args, **kwargs): # real signature unknown
            把操作文件的光标移到指定位置
            *注意seek的长度是按字节算的, 字符编码存每个字符所占的字节长度不一样。
            如“路飞学城” 用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek(4) 就把光标切换到了“飞”和“学”两个字中间。
            但如果是utf8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处理剩下的文本时发现用utf8处理不了了,因为编码对不上了。少了一个字节
    
        def seekable(self, *args, **kwargs): # real signature unknown
            判断文件是否可进行seek操作
    
        def tell(self, *args, **kwargs): # real signature unknown
            返回当前文件操作光标位置 
    
        def truncate(self, *args, **kwargs): # real signature unknown
            按指定长度截断文件
            *指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。
    
        def writable(self, *args, **kwargs): # real signature unknown
            判断文件是否可写

       

    2.flush:内存刷新到硬盘

     3.readline:读取一行

    4.文件光标:tell  seek read(1)

     

      (1)read:字符读取

      

      

       (2)seek tell  字节读取

    >>> f = open('file_1.bak','r+')
    >>> f.tell()
    0
    >>> f.read(1)    #读取一个字符
    ''
    >>> f.tell()        #光标移动2个字节
    2
    >>> f.seek(0)
    0
    >>> f.read(1)
    ''
    >>> f.read(1)
    ''
    >>> f.tell()
    4
    >>> f.seek(3)    #光标移动到第3个字节
    3
    >>> f.tell()
    3
    >>> f.read(1)   #gbk  一个字符占2个字节  #读取失败
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xb5 in position 4: illegal multibyte sequence

     5.截断:truncate(3) 剩下3个字节长度

     

    >>> f = open('file_1.bak','r+')
    >>> f.truncate(3)                   # 剩下3个字节长度
    3

       

  • 相关阅读:
    Java Stax操作XML简介
    使用JAXB来实现Java合xml之间的转换
    WebService学习笔记系列(四)
    JavaWeb学习笔记总结 目录篇
    成为谷歌的java程序员首先要做到这五点!
    Java实现快速排序
    二叉树遍历(Java实现)
    Java单链表反转
    学好java,做好工程师必读的15本书
    最全前端资源汇集
  • 原文地址:https://www.cnblogs.com/venicid/p/8404931.html
Copyright © 2011-2022 走看看