文件操作
文件操作包含:打开、关闭、读、写、复制..
目的:读取内容、写入内容、备份内容
文件操作就是把一些内容(数据)存储起来,让程序下一次执行的时候直接使用,不用重新制作一份,省时省力
操作步骤
open()方法
open()可以打开一个已经存在的文件,或创建一个新文件
open(name,mode)
name:打开的目标文件名的字符串(可以包含文件所在的具体路径)
mode:设置打开文件的模式,只读、写入、追加
不同模式打开文件的完全列表:
模式 | 描述 |
---|---|
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
File对象的属性
一个文件被打开后,你有一个file对象,可以获取file对象相关的所有属性信息:
属性 | 描述 |
---|---|
file.closed | 返回true如果文件已被关闭,否则返回false。 |
file.mode | 返回被打开文件的访问模式。 |
file.name | 返回文件的名称。 |
file.softspace | 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。 |
write()方法
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
write()方法不会在字符串的结尾添加换行符('\n'):
read()方法
read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
readlines():可以按照行的方式把整个文件中的内容进行一次性的读取,并且返回的是一个列表,其中每一行的数据为一个元素
readline()一次读取一行内容,多次执行readline()是依次读取一行
close()方法
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。用 close()方法关闭文件是一个很好的习惯。
文件定位
tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
#先写入一个文件foo.txt,写入内容并进行关闭
fo=open("foo.txt","w")
fo.write("Hello Girl and Boy")
fo.close()
#再打开刚刚的文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print("读取的字符串是 : ", str)
# 查找当前位置
position = fo.tell()
print("当前文件位置 : ", position)
# 把指针再次重新定位到文件开头
position = fo.seek(0, 0)
str = fo.read(10)
print("重新读取字符串 : ", str)
# 关闭打开的文件
fo.close()
文件备份
文件备份一般是对另外一个文件进行复制
需求:
1、接收用户输入的文件名
2、规划备份的文件名
3、备份文件写入数据
代码实现:
#1、接收用户输入的目标文件
old_name=input("请输入你要备份的文件名:")
# 2、规划备份的文件名
#2.1提取文件后缀的下标
new_name=old_name.split('.')
#2.2进行新文件名的定义
new_name=new_name[0]+'备份'+'.'+new_name[1]
# 3、备份文件写入数据(数据与原文件一致)
#3.1打开文件并进行读取
old_file=open(old_name,'rb')
new_file=open(new_name,'wb')
#3.2将原文件写入新文件
while True:
cin =old_file.read()
if len(cin)==0:
break
new_file.write(cin)
old_file.close()
new_file.close()
print("备份已完成")
文件和文件夹得操作:
python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下:
文件重命名:os.rename(目标文件名,新文件名)
删除文件:os.remove(目标文件名)
创建文件夹:os.mkdir(文件夹名称)
删除文件夹:os.rmdir(文件夹名称)
获取当前目录:os.getcwd()
改变默认目录:os.chdir(目录)
获取目录列表:os.listdir(目录)