zoukankan      html  css  js  c++  java
  • 11、Python文件和流

    1、打开文件

    open(name[,mode[,buffering]])

    open函数使用一个文件名作为其唯一的一个强制参数,然后返回一个文件对象。模式(mode)和缓冲区(buffering)是可选的。

    模式:

         'r'  读模式

       'w'   写模式

       'a'   追加模式

         'b'    二进制模式,添加到其他模式中使用

         '+'   读/写模式,添加到其他模式中使用

    '+'参数可以用来任何模式后,指明读和写都是可以的。'b'模式改变处理文件的方法。

    二进制模式和文本模式的区别:在使用二进制模式时,python会原样地给出文件中的内容,但文本模式下则不一定。python会在文本模式下做一些转换:当在windows下用文本模式读取文件时,python会将\r\n转换成\n,相反,当在windows下用文本模式写文件时,会把\n转换成\r\n。

    缓冲:

      如果参数为0,I/O就是无缓冲,所有的读写操作直接针对硬盘。如果是1,I/O就用内存来代替硬盘,是程序更快,使用flush或close时才把内容写入硬盘。

    2、读和写

    f = open()

    f.read(n) 读取n个字节

    f.write(str)

    f.close()

    3、管式输出

    使用管道可以在一个命令的后面续写其他多个命令,管道符号将一个命令的标准输出和下一个命令的标准输入连在一起。

    $ cat test.txt | python somescript.py

    文件流随机访问函数seek(offset),把当前位置移动到offset定义的位置。

    4、读写行

    file.readline(n)当n为空是,读取单独一行,并读取文件换行符,当n为非负值时读取文件的前n个字符。

    file.readlines()读取一个文件中的所有行,并以列表的返回。

    file.writeline()没有此函数。

    file.wirtelines()将一个字符串列表写入到字符串文件中。

    5、如果想确保文件被关闭了,那么应该使用try/finally语句,并且在finally字句中调用close()方法。

    try:

      file = open()

      #操作文件

    finaly:

      file.close()

    with语句可以打开文件并将其赋值到变量上:

      with open() as somefile:

        do_someting(somefile)

    6、对文件内容进行迭代

    6.1 按字节处理,在循环里做如下操作

    f.read(1)

    6.2 按行处理,在循环里做如下操作

    f.readline()

    6.3 处理整个文件

    f.read() 将文件当做一个字符串来获取

    f.readlines() 将文件读入到一个字符串列表

    7、使用fileinput实现懒惰行迭代

    懒惰行迭代的原因:在读取非常大的文件,readlines会占用太多的内存,而懒惰行迭代只是读取文件中实际需要的部分。

    import fileinput

    for line in fileinput.input(filename):

      process(line)

    8、文件迭代器

    文件对象是可以按照行进行迭代的。

    f = open(filename)

    for line in f:

      process(line)

    f.close()

    可以对文件迭代器执行和普通迭代器相同的操作:list(open(filename))

  • 相关阅读:
    「从零单排canal 03」 canal源码分析大纲
    「从零单排canal 02」canal集群版 + admin控制台 最新搭建姿势(基于1.1.4版本)
    「从零单排canal 01」 canal 10分钟入门(基于1.1.4版本)
    实时数据订阅与分发系统概述
    使用phoenix踩的坑与设计思考
    「从零单排HBase 12」HBase二级索引Phoenix使用与最佳实践
    「从零单排HBase 11」HBase二级索引解决方案
    「从零单排HBase 10」HBase集群多租户实践
    「从零单排HBase 09」HBase的那些数据结构和算法
    Netty源码分析之自定义编解码器
  • 原文地址:https://www.cnblogs.com/wanghaoran/p/2960527.html
Copyright © 2011-2022 走看看