文件操作的作用
- 把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力
文件的基本操作
- 打开文件
- 读写等操作
- 关闭文件
- 可以只打开和关闭文件,不进行任何读写操作
打开、创建文件
- 在python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
open(name, mode)
- name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
- mode:设置打开文件的模式(访问模式):只读、写入、追加等
# 打开文件
file1 = open('test.txt', 'w') # w:写入
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件开头。这是默认模式 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头 |
w | 打开一个文件只用于写入。如果该文件已经存在则打开文件,并从头开始编辑,即原有内容会被删除。如果该文件不存在,则创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已经存在,从开头开始编辑文件。如果该文件不存在,则创建新文件 |
w+ | 打开一个文件,用于读写。如果该文件已经存在则打开文件,并从头开始编辑。如果不存在,则创建新文件 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已经存在,则打开文件,如果该文件不存在,则创建新文件 |
a | 打开一个文件用于追加。如果该文件存在,文件指针将会放在文件的结尾。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已经存在,文件指针将会放在文件的结尾。 |
a+ | 打开一个文件用于读写。如果该文件已经存在,文件指针会放在文件的结尾。文件打开时会是追加模式。如果文件不存在,创建新文件用于读写 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已经存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写 |
- b:表示文件是二进制文件
- +:表示文件可读可写
- r、w:文件指针在开头
- a:文件指针在结尾
写入文件
文件对象.write('内容')
# 写入
file1.write('aaa')
访问模式
- 访问模式,默认为 r 模式
r:只读
- 如果文件不存在,报错
# r
file1 = open('test1.txt', 'r')
file1.close()
输出结果
Traceback (most recent call last):
File "/Users/apple/Desktop/code/021-文件操作.py", line 10, in <module>
file1 = open('test1.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'test1.txt'
- 不支持写入操作
file1 = open('test.txt', 'r')
file1.write('aaa')
file1.close()
输出结果
Traceback (most recent call last):
File "/Users/apple/Desktop/code/021-文件操作.py", line 11, in <module>
file1.write('aaa')
io.UnsupportedOperation: not writable
w:写入
- 如果文件不存在,创建文件。如果文件存在,打开文件
- 支持写入操作,覆盖原有内容
file1 = open('test1.txt', 'w')
file1.write('ab')
file1.close()
a:追加
- 如果文件不存在,创建文件
- 支持写入操作,默认在文件末尾追加数据
file1 = open('test2.txt', 'a')
file1.write('cc')
file1.close()
读取文件
read()
文件对象.read(num)
- num表示要从文件中读取的数据长度(单位是字节),如果没有传入num,那么就表示读取文件中所有数据
file1 = open('test3.txt', 'r')
temp = file1.read()
print(temp)
file1.close()
输出数据
a1
b2
c3
- 如果读取指定字节数据,换行也会有占位
- 文件读取之后,指针移动到读取数据之后的位置,读取到文件末尾,无法再继续读取数据
readlines()
文件对象.readlines()
- readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
file1 = open('test3.txt', 'r')
temp = file1.readlines()
print(temp)
file1.close()
输出数据
['a1\n', 'b2\n', 'c3']
- readlines读取的数据带有换行
- readlines读取的数据存在列表中
readline()
文件对象.readline()
- 一次读取一行数据
file1 = open('test3.txt', 'r')
while True:
temp = file1.readline()
if temp == '':
print('没有数据了')
break
print(temp)
file1.close()
输出结果
a1
b2
c3
没有数据了
关闭文件
文件对象.close()
# 关闭文件
file1.close()
seek
- 用来移动文件指针
文件对象.seek(偏移量,起始位置)
- 起始位置0:文件开头
- 起始位置1:当前位置
- 起始位置2:文件结尾
r改变文件指针变变量
# seek
file1 = open('test3.txt', 'r+')
file1.seek(3, 0)
print(file1.read())
file1.close()
输出结果
aa
bbbbb
ccccc
ddddd
文件和文件夹
- 导入os模块
import os
os.函数名()
文件重命名
os.rename(目标文件名,新文件名)
删除文件
os.remove(目标文件名)
创建文件夹
os.mkdir(文件夹名字)
删除文件夹
os.rmdir(文件夹名字)
获取当前目录
os.getcwd()
改变默认目录
os.chdir(目录)
获取目录列表
os.listdir(目录)
网友评论