zoukankan      html  css  js  c++  java
  • python文件读写

    读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。 

    文件打开模式若有不解,请先阅读博客:文件打开模式,python的文件打开模式同 C 一致。

    python常见的文件操作方法有([]代表可选):

    file.read([size])             # 一次读取size个字符并返回字符串,如果未给定或为负则读取全部
    file.readline([size])         # 每次读取整行字符,包括
    
    file.readlines([sizeint])     # 一次读取所有内容并按行返回list,每行结尾带
    ,若给定sizeint>0,则是设置每行最多读多少字节
    file.write(str)               # 将字符串写入文件,返回的是写入的字符长度
    file.writelines(sequence)     # 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
    file.seek(offset[, whence])   # 设置文件当前位置
    file.flush()                  # 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入
    file.next()                   # 返回文件下一行
    file.truncate([size])         # 指定长度的话,就从文件的开头开始截取指定长度,其余内容被删除; 不指定长度的话,就从文件开头截断
                                  # 到当前指针位置,其余内容删除
    file.tell()                   # 返回文件当前位置
    file.close()                  # 关闭文件。关闭后文件不能再进行读写操作

     下面来看一个例子:

    file_name = 'test.txt'
    full_file_path = os.path.join('.', file_name)
    with open(file_name, 'r+') as f:
        print('Open Success')
        """
        read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,
        可以反复调用read(size)方法,每次最多读取size个字节的内容,
        read()读取整个文件,此时读取光标已经留在文件的末尾了
        file.seek(off, whence=0): 从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动
        如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。
        """
        f.seek(0, 0)
     
        # readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list
        for line in f.readlines():
            print(line.strip())
     
        f.seek(0, 0)
     
        """
        在文件中,如果遇到一个空白行,readline()并不会返回一个空串,因为每一行的末尾还有一个或多个分隔符,因此
        空白行至少会有一个换行符或者系统使用的其他符号。只有当真的读到文件末尾时,才会读到空串""。
        """
        while True:
            line = f.readline()
            if not line:  
                print('EOF!')
                break
            print(line.strip())
     
        f.close()
    
        # 也可以直接 for 循环来读,内部相当于调用了 f.readline()
        for line in f:
            print(line)
    
        f.close()
    

    更高效的读取文件的做法是返回一个生成器:

    with open(filename) as f:
        lines = (line.strip() for line in f)
        for line in lines:
            print(line)
    

    将 print() 函数的输出重定向到一个文件中:

    f1 = open('sample.txt', 'rt', encoding='ascii')   # 指定编码
    
    with open('d:/work/test.txt', 'wt') as f:
        print('Hello World!', file=f)   # print() 函数的输出重定向到一个文件中去。
    

      

  • 相关阅读:
    矩阵的运算和分块
    组合数
    二项式定理
    Python 生成 PSK (PSK认证时,PMK就是PSK)
    ruby opposite of any?
    大大的问号之Ruby
    41 KMP子串查找算法
    字符串变量存储位置
    java中wait和notify
    java 动态代理
  • 原文地址:https://www.cnblogs.com/yanghh/p/13175144.html
Copyright © 2011-2022 走看看