一.文件处理的内容:
- python文件打开
- python文件读取
- python文件写入和创建
- python文件删除
1.文件打开及读取
文件的打开有四种方式
.l."r"是读取模式,只能读取,文件必须存在,如果不存在,会出现异常;
ll."w"是写入模式,如果文件不存在,就会新建一个文件,如果文件存在,那么写入的内容会覆盖原来的文件内容;
lll."a"是追加模式,若文件存在,要追加的内容会出现在文件末尾的下一行,若文件不存在,会新建一个文件,并写入内容;
lv."x"是创建指定的文件,如果文件存在则返回错误。
2.文件打开及读取需要运用open()函数来实现
open()函数中有两个参数:文件名和打开模式
例如:
f=open("D:/scores.txt","r",encoding="ANSI")
print(f.read())
将scores文件中的内容读取出来,运行结果为:
魔法作业成绩
罗恩:23 35 44
哈利:60 77 68 88 90
赫敏:97 99 89 91 95 90
马尔福:100 85 90
其中:1.encoding=""代表的是编码格式,由于编码方式的不同,可能会出现乱码,甚至会报错。一般为uft-8。
2.read方法的使用
- read()函数是直接读取整个文件的内容
- readline()是读取文件中的第一行,输出两次print(f.readline())可以读取文件中的前两行
#eg:
f=open("D:/scores.txt","r",encoding="ANSI")
print(f.raedline())
print(f.readline())
运行结果为:
魔法作业成绩
罗恩:23 35 44
可见如果只用readline来读取整个文件比较麻烦,可以使用readlines()
- readlines()函数,使用它来读取文件可以将所有的数据一行的形式存放到列表中
f=open("D:/scores.txt","r")
s=f.readlines()
print(s)
运行结果为:
['魔法作业成绩\n','罗恩:23 35 44\n','哈利:60 77 68 88 89\n','赫敏:97 99 89 91 95\n','马尔福:100 85 90']
也可以使用for循环,与read()函数一样,可以读取整个文件的内容
f=open("D:/scores.txt","r")
for line in f.readlines():
print(line)
运行结果为:
魔法作业成绩
罗恩:23 35 44
哈利:60 77 68 88 90
赫敏:97 99 89 91 95 90
马尔福:100 85 90
3.文件写入及创建:
可以用w重新写一个不存在的文件
os=open("D:/scores1.txt","w")
os.write("Hello mom")
#Hello mom 是写入的内容,创建完文件之后应将文件关闭
os.close()
运行之后,我们可以根据path(路径)来找到这个文件,并且文件内容是Hello mom
也可以使用w模式写入文件内容,将原来文件中的内容覆盖。
os=open("D:/scores.txt","w")
os.write("Hello mom ")
os.close()
这样运行的话scores文件中的内容会变成Hello mom,而不是原来的内容
可以使用"a"模式在文件末尾追加内容
os=open("D:/scores1.txt","a")
os.write("Hello dad")
os.close()
这样运行之后查看文件内容,可以发现为
Hello mom
Hello dad
而"a+"模式是挨着文件的末尾不换行添加一些内容eg:
os=open("D:/scores1.txt","a+")
os.write("brother")
os.close()
运行之后查看scores文件内容,会发现内容变为了
Hello mom
Hello dad brother
4.文件的删除
如需删除文件需要导入OS模块,并运行os.remove()函数
eg:
import os
os.remove("scores1.txt")
如需删除整个文件夹,可以使用os.rmdir()方法
eg:删除"img_ns_save"文件夹
import os
os.rmdir("img_ns_save")
#只能删除空文件夹
为避免出现错误,在删除文件之前可以检查文件是否存在(当然我们删除的文件一定是存在的,刚刚创建的)
import os
if os.path.exists("scores1.txt"):
os.remove("scores1.txt")
else:
print("The file does not exist " )