Python3_文件操作方法

作者 : 开心源码 本文共3476个字,预计阅读时间需要9分钟 发布时间: 2022-05-12 共175人阅读

一、使用Python打开文件的方法

使用Python打开文件时需要注意目标文件的路径和文件的编码方式,若没有指定路径和编码方式默认使用的是相对路径和系统默认的编码方式

open()方法

f = open("test", encoding="utf-8")data = f.read()print(data)

opne()方法默认使用r模式对文件进行打开

使用open()方法对文件进行操作结束的时候必需要将其从内存中进行回收,否则会占用内存

回收方法:

f.close()

with方法:

和open()方法不同,使用with方法打开文件对文件进行操作结束的时候可以不用手动回收打开文件

使用方法:

with open("test", encoding="utf-8") as f:    data = f.read()    print(data)

with方法还可以同时打开多个文件,如:

with open("test1", encoding="utf-8") as f1, open("test2", encoding="utf-8") as f2:    data1 = f1.read()    data2 = f2.read()    print(data1)    print(data2)

二、关于r模式下的方法

1、使用r模式打开文件

Python默认使用r模式打开文件,不需要特殊指定

with open("test", encoding="utf-8") as f:    data = f.read()    print(data)

运行结果:

1

2

3

4

5

2、关于读的操作方法

with open("test", encoding="utf-8") as f:    # 读取整个文件内容    data1 = f.read()    print("data1的内容是:", data1)    # 判断打开的文件能否是可读    data2 = f.readable()    print("data2的内容是:", data2)    # 每次只读取文件的一行    data3 = f.readline()    print("data3的内容是:", data3)    # 将文件的每一行内容读取出来放到一个列表中    data4 = f.readlines()    print("data4的内容是:", data4)

运行结果:

data1的内容是: 1

2

3

4

5

data2的内容是: True

data3的内容是:

data4的内容是: []

可以发现data3和data4的内容为空,这是由于对文件进行读操作的时候都是从当前游标所在的位置进行读取,若游标在文件的末尾的时候在进行读操作的话并不会读取到内容

with open("test", encoding="utf-8") as f:    # 读取整个文件内容    # data1 = f.read()    # print("data1的内容是:", data1)    # 判断打开的文件能否是可读    data2 = f.readable()    print("data2的内容是:", data2)    # 每次只读取文件的一行    data3 = f.readline()    print("data3的内容是:", data3)    # 将文件的每一行内容读取出来放到一个列表中    data4 = f.readlines()    print("data4的内容是:", data4)

data2的内容是: True

data3的内容是: 1

data4的内容是: [‘2\n’, ‘3\n’, ‘4\n’, ‘5’]

三、关于w模式下的方法:

1、使用w模式打开文件

使用w模式对文件进行操作的时候,若目标文件不存在则创立,若目标文件存在则将目标文件清空

在对文件进行写操作的时候内容必需为字符串;当一行结束的时候必需要使用换行符,否则还是在同一行内进行输入

with open("test", "w", encoding="utf-8") as f:    data1 = f.write()

2、关于写的操作方法

使用w模式对文件进行操作:
为了测试方便创立了一个新的空文件new_test

with open("new_test", "w", encoding="utf-8") as f:    # 将相应的内容写到目标文件中    f.write("这是第1行\n这是第2行\n这是第3行\n")    # 判断文件能否可写    data1 = f.writable()    print("data1的内容是:", data1)    # 将列表中的每个元素都写入到目标文件中    f.writelines(["这是第4行\n", "这是第5行\n", "这是第6行\n"])

运行结果:

data1的内容是: True

文件new_test的内容:

这是第1行这是第2行这是第3行这是第4行这是第5行这是第6行

四、关于a模式下的方法:

1、使用a模式打开文件

with open("test", "a", encoding="utf-8") as f:    data1 = f.write()

2、关于追加的操作方法

追加操作和写操作相同,不同的是追加操作是在文件末尾进行写

with open("new_test", "a", encoding="utf-8") as f:    f.write("这是第7行")    data1 = f.writable()    print("data1的内容是:", data1)    f.writelines(["这是第8行\n", "这是第9行\n", "这是第10行\n"])

运行结果:

data1的内容是: True

文件new_test的内容:

这是第1行这是第2行这是第3行这是第4行这是第5行这是第6行这是第7行这是第8行这是第9行这是第10行

五、在对文件进行修改的时候计算机内的操作

  • 1、软件将硬盘上的二进制文件读取到内存中进行解码,并将解码得到的结果通过软件输出到屏幕
  • 2、使用软件在内存中对文件进行修改
  • 3、修改完后将文件以二进制格式覆盖原文件在硬盘中的二进制

六、以字节方式对文件进行操作

1、rb

打开文件的方法:

open("test", "rb")

当使用字节方式对文件进行操作的时候无需指定编码

读取方式:
在使用字节的情况下需要读取文件内容的时候要将字节转化为字符串后进行输出,否则会以字节形式进行输出。

with open("new_test", "rb") as f:    data = f.read()    print(data.decode("utf-8"))

运行结果:

这是第1行这是第2行这是第3行这是第4行这是第5行这是第6行这是第7行这是第8行这是第9行这是第10行

2、wb

打开文件的方法:

open("new_test", "wb")

写入方式:在使用字节对文件进行写操作的时候需要将字符串转换为字节后进行输入

with open("new_test", "wb") as f:    data = "这是第11行\n".encode("utf-8")    f.write(data)

new_test的文件内容:

这是第11行

3、ab

打开文件的方法:

open("new_test", "ab")

写入方式:和wb的方式一样

with open("new_test", "ab") as f:    data = "这是第12行\n".encode("utf-8")    f.write(data)

new_test的文件内容:

这是第11行这是第12行

七、文件操作的其余方法:

1、flush():将文件在内存中的内容存放到硬盘中

使用方法:

f.flush()

2、tell():查看当前光标所在的位置(以字节为单位)

使用方法:

print(f.tell())

3、seek():移动光标(以字节为单位)

使用方法:

with open("new_test", "ab") as f:    f.seek(10)      # 将光标从文件开始处向后移动10个字节    print(f.tell())    f.seek(10,1)    # 将光标相对于前面的光标所在的位置处向后移动10个字节    print(f.tell())    f.seek(-10,2)   # 将光标从文件末尾处向前移动10个字节

运行结果:

10

20

seek(num,2)可用来获取日志的最后一行,代码如下:

测试文件test文件内容

这是第1行这是第2行这是第3行这是第4行这是第5行这是第6行这是第7行这是第8行这是第9行这是第10行这是第11行这是第12行这是第13行这是第14行

获取测试文件test的最后一行

with open("test", "rb") as f:    # 遍历文件    for i in f:        # 指定一个seek的初始值        init = -10        while True:            f.seek(init, 2)            data_list = f.readlines()            # 判断从光标所在的位置往后读取,能否超过一行            if len(data_list) > 1:                print(data_list[-1].decode("utf-8"))                break            else:                init *= 2

运行结果

这是第14行

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Python3_文件操作方法

发表回复