01.文件的基本操作
1.1 操作文件
在计算机中操作文件的套路是分为三个步骤:
1)打开文件
2)读/写文件
3)关闭文件
1.2 操作文件的函数/方法
序号 | 函数/方法 | 说明 |
---|---|---|
1 | open |
打开文件,并且返回文件操作对象 |
2 | read |
将文件读取到内存 |
3 | write |
将指定内容写入文件 |
4 | close |
关闭文件 |
open
只负责打开文件,并且返回文件对象read/write/close
三个方法都需要通过文件对象来调用
1.3 读取文件
1.3.1 read方法(一次性读取)
read
方法读取文件需要注意一下几点:
1)open
函数的第一个参数是要打开的文件名(文件名区分大小写)
2)read
方法一次性读取文件所有内容并返回
3)close
只负责关闭文件,如果忘记关闭文件,则会造成资源浪费或者影响后续对文件的访问
# 打开文件,指定编码格式,避免无法读取中文 f = open("a.txt",encoding="utf-8") # 读取文件 content = f.read() print(content) # 关闭文件 f.close()
小提示:
开发过程中,通常会先编写 打开 和 关闭 的代码,再编写中间针对文件的 读/写 操作!
第一次打开文件的时候,文件指针指向文件的开始位置,当执行了read
方法后,指针会移动到文件末尾。
1.3.2 readline方法(按行读取)
read
方法是一次性将文件读取到内存,然后返回一个文件对象,如果文件特别大的话,那么对内存的占用会非常严重,所以有了readline
方法
readline
方法一次性读取一行内容- 方法执行后,会把文件指针移动到下一行,准备再次读取
大文件的正确读取方式:
# 打开文件 f = open("a.txt",encoding="utf-8") # 读取大文件 while True: line = f.readline() if not line: break # 每读取一行的末尾已经有了一个 \n print(line,end="") # 关闭文件 f.close()
2.4 打开文件的方式
默认情况下:open
函数是以只读方式打开文件。
语法格式:
f = open("文件名","访问方式",encoding="编码格式")
访问方式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常 |
w | 以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a | 以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 |
r+ | 以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常 |
w+ | 以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a+ | 以读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 |
小提示
频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读、只写 的方式来操作文件
实战演练--写入文件实例
# 写模式,打开文件 f = open("b.txt","w",encoding="utf-8") # 写入内容 f.write("今天天气真好!\n") f.write("我们出去钓鱼吧!") # 关闭文件 f.close()
02.文件的复制
2.1 小文件的复制
小文件的复制思路是:打开一个文件,全部读取后写入到另外一个文件
# 打开读与写的文件 file_read = open("b.txt",encoding="utf-8") file_write = open("c.txt","w",encoding="utf-8") # 读取文件 text = file_read.read() file_write.write(text) # 关闭文件 file_read.close() file_write.close()
2.2 大文件的复制
大文件的复制思路是:打开一个文件,逐行边读边写。
# 打开读与写的文件 file_read = open("b.txt",encoding="utf-8") file_write = open("c.txt","w",encoding="utf-8") # 读取文件 while True: line = file_read.readline() if not line: break file_write.write(line) # 关闭文件 file_read.close() file_write.close()
来源:https://www.cnblogs.com/OliverQin/p/12227481.html