1、文件基本操作
1.1 文件操作套路
1.打开文件
2.读、写文件
读文件:将文件内容读入内存中
写文件:将内存内容写入文件中
3.关闭文件
1.2 操作文件的函数/方法
open:打开文件,并返回文件操作对象
read:将文件内容读取到内存
write:将指定内容写入到文件
close:关闭文件
open函数负责打开文件,并且返回文件对象
open/read/write三个方法都需要文件对象来调用
1.3 read读取文件
open函数的第一个参数是要打开文件名(区分大小写)
如果文件存在返回文件操作对象,不存在报错
read方法一次性读入返回文件的所有内容
close方法负责关闭文件,如果忘记关闭文件,会造成系统资源消耗,并且影响后续对文件访问。
注意:read方法执行后,文件指针移动到文件末尾
file = open("readme")
text = file.read()
print(text)
file.close()
1.4 打开文件的方式
open函数默认以只读方式打开文件并返回文件对象
f = open("访问文件名", "访问方式")
访问方式:
r:只读 # 以只读方式打开文件,文件指针在文件开头,文件不存在,报错
w:只写 #以只写的方式打开文件,如果文件存在,覆盖,不存在,创建新文件
a:追加 # 以追加方式打开文件,如果文件已经存在,文件指针在文件结尾,文件不存在,创建新文件进行写入
r+:读写 # 以读写的方式打开文件,文件的指针将放在文件开头,文件不存在报错
w+:读写 # 读写的方式打开文件,文件存在,覆盖,文件不存在,创建新文件
a+:读写 # 以读写的方式打开文件,文件指针将放在文件结尾,文件不存在,创建新文件写入
提示:频繁移动指针会影响文件读写效率,开发中更多以只读只写方式来操作文件
1.5 按行读取文件内容
read方法默认会把文件的所有内容一次性读取到内存
如果文件太大,对内存占用会非常严重
readline方法
readline方法可以一次读取一行内容
方法执行后,会把文件指针移动到下一行,准备再次读取
file = open("new.txt", "r")
text = file.readline() # 只读一行内容
print(text) # 默认自动换行,打印一行会空一行
while True:
line_text = file.readline()
print(line_text, end="")
if len(line_text) == 0:
break
file.close()
1.6 文件读写案例
小文件复制
# 1.打开文件
file_read = open("new.txt")
file_write = open("copy_new.txt", "w")
# 2.读取并写入文件
text = file_read.read()
file_write.write(text)
# 3.关闭文件
file_read.close()
file_write.close()
大文件复制
file_read = open("new.txt")
file_write = open("copy2_new.txt", "w")
while True:
text = file_read.readline()
if not text:
break
file_write.write(text)
file_read.close()
file_write.close()
2.文件/目录的常用管理操作
在终端/文件浏览器中可以执行常规的文件/目录管理操作,例如:
创建、重命名、删除、改变路径、查看目录内容
在python中,如果希望通过程序实现上述功能,需要倒入o s模块
文件操作:
rename:重命名文件 os.rename(源文件名,目标文件名)
remove:删除文件 os.remve(文件名)
目录操作:
listdir:目录列表 os.listdir(目录名)
mkdir:创建目录 os.mkdir(目录名)
rmdir:删除目录 os.rmdir(目录名) # 只能删除空目录
shutil.rmtree(目录名)
getcwd:获取当前目录 os.getcwd()
chdir:修改工作目录 os.chdir(目标目录)
path.isdir:判断是否是文件 os.path.isdir(文件路径)
path.exists:判断制定文件或者目录是否存在 os.path.exists(文件名)
def plcjwj():
"""批量创建文件"""
print(os.getcwd())
if os.path.exists("./file"):
shutil.rmtree("./file")
os.mkdir("file")
os.chdir("./file")
print(os.getcwd())
# 批量创建文件
for i in range(1, 21):
file = open("new%d.txt" % i, "w", encoding="utf-8")
file.write("循环创建文件")
file.close()
def plcmmwj():
print(os.getcwd())
path = "/users/xiaobo/PycharmProjects/pythonProject/python_jichu/file"
if os.getcwd() != path:
os.chdir(path)
file = os.listdir()
print(file)
for name in file:
os.rename(name, "demo" + name)
plcjwj()
plcmmwj()