Python从零开始学 Day07~文件处理(初步)

Python从零开始学 Day07~文件处理(初步)

本文是上一篇文章的后续,详情点击该链接~

创建文件对象open()

        我们在上一集异常处理的时候,就使用过这种操作

打开的方式有以下几种:
模式 描述
r 读read模式
w 写write模式。如果文件不存在则创建;如果文件存在,则重写新内容;
a 追加append模式。如果文件不存在则创建;如果文件存在,则在文件末尾追加内容
b 二进制binary模式(可与其他模式组合使用)
+ 读、写模式(可与其他模式组合使用)
先来个简单的操作(本文就一直用桌面目录好了):
f = open(r"C:\Users\36961\Desktop\alvin.txt","a")
word = "hello world Python"
f.write(word)#写入
f.close()#关闭

在这里插入图片描述

        在操作文本文件时,经常会操作中文,这时候就经常会碰到乱码问题。先来看看各种编码之间的关系。


在这里插入图片描述

        关于哪些理论呢,这里就不啰嗦了,百度也是一大堆。我就直接撸代码了~

writelines()写入字符串列表

f = open(r"C:\Users\36961\Desktop\alvin.txt","a")
word = ['你好\n','我\n','想\n','和你们\n','做朋友']
f.writelines(word)#写入
f.close()#关闭

在这里插入图片描述

close()关闭文件流

       由于文件底层是由操作系统控制,所以我们打开的文件对象必须显式调用close()方法关闭文件对象。当调用close()方法时,首先会把缓冲区数据写入文件(也可以直接调用flush()方法),再关闭文件,释放文件对象。

       为了确保打开的文件对象正常关闭,一般结合异常机制的 finally或者with 关键字实现无论何种情况都能关闭打开的文件对象。

所以说,这才是我们最常用的~
try:
    f = open(r"C:\Users\36961\Desktop\alvin.txt", "a")
    word = ['你好\n', '我\n', '想\n', '和你们\n', '做朋友']
    f.writelines(word)  # 写入
except BaseException as e:
    print(e)
finally:
    f.close()#关闭

with语句(上下文管理器)

        with关键字(上下文管理器)可以自动管理上下文资源,不论什么原因跳出with 块,都能确保文件正确的关闭,并且可以在代码块执行完毕后自动还原进入该代码块时的现场。

word = ['你好\n', '我\n', '想\n', '和你们\n', '做朋友']
with open(r"C:\Users\36961\Desktop\alvin.txt", "a") as f:
    f.writelines(word)  # 写入

文本文件的读取

read([size])

       从文件中读取 size 个字符,并作为结果返回。如果没有 size 参数,则读取整个文件。读取到文件末尾,会返回空字符串。

readline()

       读取一行内容作为结果返回。读取到文件末尾,会返回空字符串。

readlines()

       文本文件中,每一行作为一个字符串存入列表中,返回该列表

话不多说,撸代码~

把文件里面的字读进来,也可以在read里面选择需要都进来的字符数
with open(r"C:\Users\36961\Desktop\alvin.txt","r",encoding="utf-8") as f:
    print(f.read())

在这里插入图片描述

按行读取一个文件

with open(r"C:\Users\36961\Desktop\alvin.txt","r",encoding="utf-8") as f:
    while True:
        frag = f.readline()
        if not frag:
            break
        else:
            print(frag,end=" ")

在这里插入图片描述

二进制文件的读取和写入

       二进制文件的处理流程和文本文件流程一致。首先还是要创建文件对象,不过,我们需要指定二进制模式,从而创建出二进制文件对象。

f = open(r"C:\Users\36961\Desktop\alvin.txt","wb") #可写的、重写模式的二进制文件对象
f = open(r"C:\Users\36961\Desktop\alvin.txt","ab") #可写的、追加模式的二进制文件对象
f = open(r"C:\Users\36961\Desktop\alvin.txt","rb") #可读的二进制文件对象

       创建好二进制文件对象后,仍然可以使用 write()、read()实现文件的读写操作。

来,我们拷贝下图片试试?

在这里插入图片描述

with open('C://Users//36961//Desktop//IOStudy//timg.jpg','rb') as f:         #读
    with open('C://Users//36961//Desktop//IOStudyPlus//timg.jpg','wb') as w: #写
        for line in f.readlines():
            w.write(line)

拷贝成功了~

在这里插入图片描述

文件对象的常用属性

name 返回文件的名字
mode 返回文件的打开模式
closed 若文件被关闭则返回True

文件对象的常用方法

write(str) 将字符串 str内容写入文件
flush() 把缓冲区的内容写入文件,但不关闭文件
close() 把缓冲区内容写入文件,同时关闭文件,释放文件对象相关资源
read([size]) 从文件中读取size 个字节或字符的内容返回。若省略[size],则读 取到文件末尾,即一次读取文件所有内容
readlines() 把文本文件中每一行都作为独立的字符串对象,并将这些对象放入 列表返回
writelines(s) 将字符串列表 s 写入文件文件,不添加换行符
seek(offset) 把文件指针移动到新的位置, offset 表示相对于whence 的多少个
([whence]) 字节的偏移量;
offset:off 为正往结束方向移动,为负往开始方向移动
whence 不同的值代表不同含义:
0: 从文件头开始计算(默认值)
1:从当前位置开始计算
2:从文件尾开始计算
tell() 返回文件指针的当前位置
truncate([size]) 不论指针在什么位置,只留下指针前 size 个字节的内容,其余全 部删除;
如果没有传入 size,则当指针当前位置到文件末尾内容全部删除
readline() 从文本文件中读取一行内容
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章