python文件读写

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

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

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

file.read([size])             # 一次读取size个字符并返回字符串,如果未给定或为负则读取全部
file.readline([size])         # 每次读取整行字符,包括\n
file.readlines([sizeint])     # 一次读取所有内容并按行返回list,每行结尾带\n,若给定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() 函数的输出重定向到一个文件中去。

  

posted @ 2020-06-22 08:40  _yanghh  阅读(266)  评论(0编辑  收藏  举报