文件操作
1.打开文件
open(文件名,访问模式)
f=open('./aaa.txt','w')#以写入模式打开aaa.txt ./代表当前目录
访问模式说明:
访问模式 | 说明 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。 新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。 如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。 如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。 文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。 如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。 如果该文件不存在,创建新文件用于读写。 |
2.读取文件内容
文件内容:
①read 读取文件全部内容,读取出来为字符串
f=open("./aaa.txt","r",encoding="utf8")
print(f.read()+'\n')
输出结果:
②readline 读取一行,可以指定读取的字符数
f=open("./aaa.txt","r",encoding="utf8")
print(f.readline(2)+'\n')
输出结果:
③readlines 按行读取所有内容,结果是列表
f=open("./aaa.txt","r",encoding="utf8")
print(f.readlines())
输出结果:
f=open("./aaa.txt","w+")
f.writelines(["hello","python","hello","world"])
3.对文件写入
①write:覆盖原内容
f=open("./aaa.txt","w+")
f.write("hello python")
②writelines 在原内容后面添加,参数为list型
f=open("./aaa.txt","w+")
f.writelines(["hello","python","hello","world"])
4.关闭文件
f.close()
5.文件备份
代码实
现原理:
以读的方式打开文件
oldFile = open(oldFileName,'rb')
# 提取文件的后缀
fileFlagNum = oldFileName.rfind('.')
if fileFlagNum > 0:
fileFlag = oldFileName[fileFlagNum:]
# 组织新的文件名字
newFileName = oldFileName[:fileFlagNum] + '[复件]' + fileFlag
# 创建新文件
newFile = open(newFileName, 'wb')
# 把旧文件中的数据,一行一行的进行复制到新文件中
for lineContent in oldFile.readlines():
newFile.write(lineContent)
# 关闭文件
oldFile.close()
newFile.close()
6.文件重命名
rename(原名,新名)
import os
os.rename("aaa.txt", "aaa(1).txt")
7.删除文件
import os
os.remove("aaa.txt")
8.创建文件夹
import os
os.mkdir("abc")
9.获取当前目录
import os
os.getcwd()
10. 获取目录列表
import os
os.listdir("./")
11. 删除文件夹
import os
os.rmdir("abc")
异常处理
异常:当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"
目的:为了不让程序执行中断,可以捕获异常并给出相应的处理,而不是报错
举例:以r模式打开123.txt,而该文件不不存在,运行程序就会报错
print('-----test--1---')
open('123.txt','r')
print('-----test--2---')
报错信息:
此时我们
* 把可能出现问题的代码,放在try中 * 把处理异常的代码,放在except中
再次运行程序:
try:
print('-----test--1---')
open('123.txt','r')
print('-----test--2---')
except FileNotFoundError:
print("FileNotFoundError")
print("我执行了这一步")
运行结果就没有报错了,可以执行异常后面的代码
当捕获多个异常时,可以把要捕获的异常的名字,放到except 后,并使用元组的方式仅进行存储
try:
print('-----test--1---')
open('123.txt','r')
print('-----test--2---')
except (FileNotFoundError,IOError):
if FileNotFoundError:
print("FileNotFoundError")
if IOError:
print("IOError")
print("我执行了这一步")
运行结果:
当没有捕捉到异常时,执行else中的事件
try:
print('-----test--1---')
#open('123.txt','r')
print('-----test--2---')
except (FileNotFoundError,IOError):
if FileNotFoundError:
print("FileNotFoundError")
if IOError:
print("IOError")
else:
print("我执行了这一步")
运行结果:
一个段代码必须要执行,无论异常是否产生都要执行,那么此时就需要使用finally。
比如文件关闭,释放锁,把数据库连接返还给连接池等