zoukankan      html  css  js  c++  java
  • python 文件处理 -- 01 文件打开&读取&写入&关闭&指针

    1.文件打开

    1.1.文件打开方法

    open(name[,mode[,buff]] ->file

            name--文件路径

            mode--打开方式

            buff--缓冲buffer的大小

            file--返回file类型的对象

            重要:必须要写close()方法

    1.2文件打开方式

    另:

            打开二进制文件(如图片)时,需使用如下方式

                    'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'

    2.文件读取

    2.1文件读取方法

    read([size])

             读取size个字节,默认 读取全部。

             如果size小于等于文件字节数,则返回size大小的内容,且游标在读取完之后的位置

    readline([size])

             读取从当前游标算起的一行。

             如果size小于当前行的字节数,则返回size大小的内容,且游标在读取完之后的位置

    readlines([size])

             一次性读取完文件,返回由每一行组成的list

             注意:

                      size其实是无用的,返回的list长度不由它决定,而是由io模块化总的io.DEFAULT_BUFFER_SIZE决定,而且不是size=3就读取3io.DEFAULT_BUFFER_SIZE字节大小的内容

                      实际上不是一次性读取完文件,只是读取io.DEFAULT_BUFFER_SIZE个字节大小(如8192)的内容,然后返回由比8192稍大或相等的字节大小的内容(保证list[-1]是完整一行)所组成的列表。

    iter

             使用迭代器按行读取文件(推荐方法

             不受io.DEFAULT_BUFFER_SIZE的限制

    >>> f=open("helloworld.py")

    >>> iter_f=iter(f)

    >>> line=0

    >>> for i in iter_f:

    ...     line+=1

    ...

    >>> line

    4

    3.文件写入

    3.1文件写入方法

             write(str)

                      将字符串写入文件

             writelines(sequence_of_strings)

                      提供一个str或由str组成的迭代器,将每个str相连写入文件中

                      注:必须是有字符串所组成的序列,否则会报错

    3.2linux写缓存

             

    4.文件关闭

    4.1为什么要关闭文件?

    将缓存在内存中的文件写入到磁盘

    linux中,每个进程能打开的文件数是有限的,如果超过这个限制,那么打开文件就会失败。

    注:

             查看某进程的限制

             cat /proc/${pid}/limits

            

             linux进程打开文件数限制

                      http://www.cnblogs.com/aka-blog/articles/filemax.html

    4.2file.fileno()

    文件描述符,用来描述当前文件被打开(未关闭)多少次。

    如果超过限制,则会报错IO Error:Too many open files: 'xx'

    5.文件指针

    5.1seek()函数

             移动文件指针

             seek(offset[, whence]) -> None

                      offset--偏移量,可以为负数

                      whence--偏移相对位置。

                               可以使用0,1,2;

                               也可以使用OS模块的宏定义

                                        os.SEEK_SET(文件起始位置0)

                                        os.SEEK_CUR(文件当前位置1)

                                        os.SEEK_END(文件结束位置2)

    5.2举例

    >>> f=open('helloworld.py','r+')

    >>> c=f.read()

    >>> c

    'helloword123 helloword456 helloword789'

    >>> f.seek(0,os.SEEK_SET)

    >>> f.write('helloppt')

    >>> f.seek(0,os.SEEK_SET)

    >>> c=f.read()

    >>> c

    'hellopptd123 helloword456 helloword789'

    >>> f.close()

  • 相关阅读:
    SQL Server和Oracle数据库索引介绍
    ITPUB上一个Oracle面试题
    国服《巫妖王之怒》3.35冰双持新手献礼指南
    WLK奥法输出循环
    flume架构初接触
    密码校验正则表达式(java 环境)
    初学Mahout测试kmeans算法
    身份证校验(java)
    gcc 中 O选项对空函数的优化
    《肖申克的救赎》语录
  • 原文地址:https://www.cnblogs.com/yc913344706/p/7764272.html
Copyright © 2011-2022 走看看