python 文件读写操作

1、打开/关闭文件操作

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

方式1:
    格式:句柄 = open("文件名", "模式")
    myfile = open("1.txt", "w")  # 打开文件,此种打开文件方式需手动关闭
    myfile.close() #关闭文件
方式2:
    格式:with open("文件名", "模式") as 句柄
    with open("1.txt", "w") as myfile:  #此种打开方式,不需要手动关闭文件

2、文件的打开模式

r :只读【只读:默认模式,指针位0】
w :只写【只写;存在则覆盖,不存在则创建,指针为0】
a :追加【追加:存在则追加,不存在创建在写入,指针在结尾】

r+ :读写【读写:指针默认在开头,写入时会覆盖目标位置内容,只能在开通阀盖写入,或者在结尾写入,中间写入不了,如果从当前位置写可以用 file1.seek(file1.tell())】
w+ :写读【写读:存在则覆盖,不存在则创建】
a+ :写读【写读:存在则追加,不存在创建在写入】

rb 或 r+b 【以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。】
wb 或 w+b 【以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。】
ab 或 a+b 【以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放】

rb+【以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。】
wb+【以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。】
ab+【以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。】

不带b的打开方式都是字符串类型
带b的打开方式都为字节(二进制)类型

3、常用方法

# myfile.seek()  #调整指针位置
# myfile.write()  #写入内容
# myfile.close()  #关闭文件
# myfile.tell()  #获取指针当前的位置
# myfile.read([size])  # 已字符串的格式返回所有内容,可指定读取内容的size,默认全部
# myfile.readline()  # 返回一行
# myfile.readlines() #返回一个列表,每行为一个元素
# myfile.flush()  #刷新缓冲区
# myfile.truncate()  #截取内容,截取当前指针之前的内容,直接操作原文件

 seek

def seek(self, offset: int, whence: int = 0) -> int:
    # offset 偏移量
    # whence 偏移相对位置
    
    #偏移相对位置为os模块当中的SEEK_SET、SEEK_CUR、SEEK_END:
    #  os.SEEK_SET:表示文件的相对起始位置  = 0
    #  os.SEEK_CUR:表示文件的相对当前位置  = 1
    #  os.SEEK_END:表示文件的相对结束位置  = 2
    
    myfile.seek(0, 0) = myfile.seek(0, os.SEEK_SET)  # 指针至于文件开头
    myfile.seek(2, 0) = myfile.seek(2, os.SEEK_SET)  # 指针至于文件开头,并前后偏移2
    myfile.seek(0, 1) = myfile.seek(0, os.SEEK_CUR)  # 指针至于当前位置
    myfile.seek(0, 2) = myfile.seek(0, os.SEEK_END)  # 指针至于文件末尾
import os
with open("1.txt", "r+", encoding="utf-8") as myfile:
    print(myfile.tell())
    myfile.seek(0, 2)
    print(myfile.tell())
    myfile.seek(0, os.SEEK_SET)
    print(myfile.tell())
    myfile.read(3)
    print(myfile.tell())
    myfile.seek(0, os.SEEK_END)
    print(myfile.tell())

结果:
    0
    16
    0
    3
    16

Process finished with exit code 0
View Code

4、读取一个文件每一行的实现方式:

# 方法1
f = open("2.txt", "r+")
line = f.readline()
while line:
    print line
    line = f.readline()
f.close()
# 方法2
f = open("2.txt", "r+")
ret = f.readlines()
for line in ret:
    print line
f.close()
# 方法3
f = open("2.txt", "r+")
for line in f.readlines():
    print line
f.close()
posted @ 2017-11-26 14:17  YangYongming  阅读(302)  评论(0编辑  收藏  举报