文件的基本操作
文件操作步骤
1、打开文件
2、读写等操作
3、关闭文件
注意:可以只打开和关闭文件,不进行任何读写操作
打开
open(name, mode)
name:要打开的目标文件名的字符串(可以包含文件所在的具体路径)
mode:设置打开文件的模式(访问模式):只读、写入、追加等
关闭
close()
f = open('test.txt', 'w')
f.write('test')
f.close()
访问模式特点一
主要:r w a
读取函数
准备test.txt文件内容为:
test1
test2
test3
test4
test5
read()
文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,默认读取文件中所有的数据
f = open('test.txt')
contest = f.read()
print(contest)
f.close()
输出:
test1
test2
test3
test4
test5
readlines()
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
f = open('test.txt')
contest = f.readlines()
print(contest)
f.close()
输出:['test1\n', 'test2\n', 'test3\n', 'test4\n', 'test5']
readline()
readline()一次读取一行内容
f = open('test.txt', 'r')
con1 = f.readline()
print(con1)
con1 = f.readline()
print(con1)
con1 = f.readline()
print(con1)
f.close()
输出:
test1
test2
test3
访问模式特点二
seek()函数
作用:用来移动文件指针
语法:文件对象.seek(偏移量,起始位置)
起始位置:
- 0:文件开头
- 1:当前位置
- 2:文件结尾
文件备份
需求:用户输入当前目录下的任意文件名,程序完成对该文件的备份功能(备份文件名为xx[备份]后缀),例如:test[备份].txt
步骤分析
1、接受用户输入的文件名
2、规划备份文件名
2.1提取目标文件后缀
2.2组织备份的文件名,xx[备份]后缀
3、备份文件写入数据
代码实现
old_name = input('请输入您要备份的文件名字:')
index = old_name.rfind('.')
# 判断有效文件才备份(下标所在位置大于0)
if index > 0:
postfix = old_name[index:]
new_name = old_name[:index] + '[备份]' + postfix
# 打开文件
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')
# 将源文件数据写入备份文件
# 考虑到文件量巨大,使用循环写入
while True:
con = old_f.read(1024)
# 判断文件读取完结束写入
if len(con) == 0:
break
new_f.write(con)
# 关闭文件
old_f.close()
new_f.close()
文件操作函数
文件和文件夹的操作
在python中文件和文件夹的操作要借助os模块里面的相关功能
1、导入os模块
2、使用os模块相关功能
os.函数名()
文件重命名
os.rename(目标文件名, 新文件名)
删除文件
os.remove(目标文件名)
创建文件夹
os.mkdir(文件夹名字)
删除文件夹
os.rmdir(文件夹名字)
获取当前目录
os.getcwd()
改变默认目录
os.chdir(目录)
获取目录列表
os.listdir(目录)
文件夹重命名
os.rename(原文件夹名, 新文件夹名)
删除文件夹名
os.remove(目标文件夹名)
应用案例
需求
批量修改文件名,即可添加指定字符串,又能删除指定字符串
步骤
1、设置添加删除字符串的标识
2、获取指定目录的所有文件
3、将原有文件名添加/删除指定字符串,构造新名字
4、os.rename()重命名
代码实现
import os
# 构造条件的数据(1添加字符串,2删除字符串)
flag = 1
# 找到所有文件并获取
file_list = os.listdir()
# 构造新名字
for i in file_list:
if flag == 1:
new_name = 'Python_' + i
elif flag == 2:
num = len('Python_')
new_name = i[num:]
os.rename(i, new_name)