学习内容
1、文件操作
文件基本操作 文件读写常用 二进制文件操作 案例——文件备份
2、目录操作
目录操作常用 案例——批量修改文件名
一、文件操作
1、文件基本操作
文件操作包含 打开文件,操作文件,关闭文件 三个步骤
- 打开文件:
open(file, mode, encoding) ,打开文件使用的是 open() 函数 - 注意: 三个参数中,前两个参数名可以省略,但第三个
encoding 不能省略。例如open('test.txt', 'r', encoding='gbk')
1、file 参数表示文件名
2、mode 参数表示文件打开模式:
r : 表示只读,不会修改文件内容
w : 表示只写,每打开一次文件就会将原来的内容清除,然后保留新的内容
a : 表示追加,不会清除原文件的内容,添加的内容会追加在文件的末尾
在使用 w/a 打开模式时,如果不存在对应的文件则会自动创建文件,如果存在
对应的文件则表示打开文件,但使用 a 打开模式时必须存在对应的文件
3、encoding 参数表示文件的编码格式
常见的编码格式有 utf-8 gbk ascii 等,当编码格式不同时可能会出现乱码
1、读文件: read() 函数
2、写文件: write() 函数
- 关闭文件:
close() 函数,能将内存中操作好的文件同步到硬盘中 - 一般情况下,在操作文件时习惯使用
with 关键字,好处是不需要主动使用 close() 函数关闭文件,在操作结束后文件会自动关闭
f = open('test.txt', 'w', encoding='utf-8')
f.write('Hello world')
f.close()
with open('test.txt', 'r', encoding='utf-8') as f1:
line = f1.read()
print(line)
2、文件读写常用
- 读文件: 必须使用
mode='r' 模式打开,对应的文件必须存在 - 在 python 中,读取文件是一次性的,从头开始往下读取,直到需要提取的内容结束,且之前读取过的内容不会再被提取
- 下列函数中,读取的文件内容都是字符串类型
read(n) : n 表示一次读取多少字节的内容,不写则表示全部读取
readline() : 一次读取一行的内容
readlines() : 按行读取,读取全部内容,返回值是列表,列表的每项是一行的内容
readable() : 判断文件是否可读,如果可读返回 True,否则返回 False
- 写文件: 必须使用
mode='w/a' 模式打开,打开的文件可以不用存在,能自动创建
write() : 写入文件内容,写入的对象只能是字符串
writelines() : 写入文件内容,写入的对象是一个迭代序列,如字符串、列表等
writable() : 用来判断函数是否可写入,能写入返回 True,否则返回 False
f = open('test.txt', 'w', encoding='utf-8')
if f.writable():
f.write('Write file\n')
f.writelines(['Hello world\n', 'Hello python'])
f.close()
with open('test.txt', 'r', encoding='utf-8') as f1:
if f1.readable():
line = f1.read()
print(line)
3、二进制操作文件
- 二进制操作文件:只能 读取或写入 文件对应的二进制,比如图片和视频等内容
- 注意: 操作二进制文件时,不能使用
encoding 参数
rb : 读取的方式打开二进制文件
wb : 写入的方式打开二进制文件
ab : 追加的方式打开二进制文件
- 举例: 在当前目录下添加一个
test.jpg 图片
with open('test.jpg', 'ab') as f1:
f1.write(b'\nHello world')
with open('test.jpg', 'rb') as f:
for i in f.readlines():
print(i)
4、案例——文件备份
- 思路: 先读取文件内容,然后再创建一个备份文件,将读取的内容写入文件中
print("注意:文件名的格式需要包含后缀名,如 'fileName.txt'")
fileName = input('输入要备份的文件名:')
bFiles = fileName.rsplit('.', 1)
bFileName = bFiles[0] + '[备份].' + bFiles[1]
with open(fileName, 'r', encoding='utf-8') as f1, \
open(bFileName, 'w', encoding='utf-8') as f2:
f2.write(f1.read())
print(f'{fileName}\t备份完成')
二、目录操作
1、目录操作常用
- 在 python 中,对目录的操作需要使用到
os 模块,使用关键字 import 引入
rename() : 对文件重命名
remove() : 删除文件
mkdir() : 创建空目录
getcwd() : 获取当前目录
chdir() : 切换目录
listdir() : 获取指定目录的内容,返回值是列表,列表的每一项是对应的文件名
2、案例——批量修改文件名
import os
oldDir = os.getcwd()
if 'Test' not in os.listdir():
os.mkdir('Test')
os.chdir('Test')
for i in range(1, 10):
f = open(f'{i}.txt', 'w', encoding='utf-8')
f.close()
fileNames = os.listdir()
print(fileNames)
index = 0
for i in 'abcdefghi':
os.rename(fileNames[index], f'{i}.txt')
index += 1
print(os.listdir())
os.chdir(oldDir)
|