一、概念
文件是指存储在某种长期储存设备上的一段数据,长期存储设备包含:硬盘、U盘、移动硬盘、光盘等。文件的作用是将数据长期保存下来,在需要的时候使用。
二、操作文件的函数、方法
函数 | 说明 |
open | 打开文件返回文件操作对象 |
read | 将文件内容读取到内存 |
write | 将指定内容写入文件 |
close | 关闭文件 |
open函数的第一个参数是要打开的文件名(文件名区分大小写)
read方法可以一次性读入并返回文件的所有内容
write方法可以将指定内容一次性写入文件
close方法负责关闭文件
读取文件基本操作:
我们创建一个文本文件hello.txt。
# 打开文件
file = open('hello.txt')
# 读取文件
text = file.read()
print(text)
# 关闭文件
file.close()
输出:
hello world
打开文件的方式:
open函数默认以只读的方式打开文件,并且返回文件对象。
语法:
f = open("文件名", "访问方式")
常见的文件访问方式如下图所示:
访问方式 | 说明 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认方式。如果文件不存在抛出异常。 |
w | 以只写的方式打开文件。如果文件存在会被覆盖。如果文件不存在创建新文件 |
a | 以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在创建新文件写入 |
r+ | 以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常 |
w+ | 以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a+ | 以读写方式打开文件。如果文件存在文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 |
写入文件基本操作:
# 打开文件
file = open('hello.txt','a+')
# 写入内容
file.write('今天是个好天气')
file.write('中国')
# 关闭文件
file.close()
输出:
按行读取文件内容:
read方法默认会把文件的所有内容一次性读取到内存,如果文件太大,对内存的占用会非常严重。
readline方法可以一次读取一行的内容,方法执行后,会把指针移动到下一行,准备再次读取。
代码示例如下:
# 打开大文件
file = open('hello.txt', 'r')
# 写入内容
while True:
text = file.readline()
if text:
print(text, end='')
else:
break
# 关闭文件
file.close()
输出:
今天是个好天气中国
hello
三、案例-复制文件
# 打开源文件
file1 = open('hello.txt')
# 目标文件
file2 = open('a.txt', 'w+')
while True:
text = file1.readline()
if text:
file2.write(text)
else:
break
print(file2.read())
# 关闭文件
file1.close()
file2.close()
四、文件、目录的操作
常见的文件目录操作函数如下图所示:
函数名 | 说明 |
rename | 重命名文件 |
remove | 删除文件 |
listdir | 目录列表 |
mkdir | 创建目录 |
rmdir | 删除目录 |
getcwd | 获取当前目录 |
chdir | 修改工作目录 |
path.isdir | 判断是否是文件 |
import os
# 文件重命名 第一个参数源文件名, 第二个参数目标文件名
os.rename('hello.txt', 'hello.txt')
# 删除文件
os.remove('hello.txt')
# 文件目录列表
print(os.listdir())
五、with..as语句
我们在进行文件操作的时候如果忘记关闭文件资源,会造成资源的浪费,因此需要文件使用后可以自动释放资源,就是用with..as语句,实现自动分配并释放资源。
语法:
with 表达式 as 变量名:
代码块
代码块
代码示例如下:
with open('hello.txt','w+') as f:
print(f.read())
我们不需要调用close方法关闭文件。