用于记录python中文件处理的一般方法,以便之后使用
使用文件操作,有open就要close
操作文件的套路
- 打开文件
- 读、写文件
- 读 将文件内容读入内存
- 写 将内存内容写入文件
- 关闭文件
操作文件的函数/方法
- 在
Python
中要操作文件需要记住 1 个函数和 3 个方法
# 1. 打开 - 文件名需要注意大小写
file = open("README")
# 2. 读取
text = file.read()
print(text)
# 3. 关闭
file.close()
序号 | 函数/方法 | 说明 |
---|---|---|
01 | open | 打开文件,并且返回文件操作对象 |
02 | read | 将文件内容读取到内存 |
03 | write | 将指定内容写入文件 |
04 | close | 关闭文件 |
-
open
函数负责打开文件,并且返回文件对象 -
read
/write
/close
三个方法都需要通过 文件对象 来调用 -
open
函数的第一个参数是要打开的文件名(文件名区分大小写)- 如果文件 存在,返回 文件操作对象
- 如果文件 不存在,会 抛出异常
-
read
方法可以一次性 读入 并 返回 文件的 所有内容 -
close
方法负责 关闭文件- 如果 忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问
-
注意:
read
方法执行后,会把 文件指针 移动到 文件的末尾
open 打开文件的方式
f = open("文件名", "访问方式")
访问方式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常 |
w | 以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a | 以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 |
r+ | 以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常 |
w+ | 以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a+ | 以读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 |
频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读、只写 的方式来操作文件
# 打开文件
f = open("README", "w")
f.write("hello python!\n")
f.write("今天天气真好")
# 关闭文件
f.close()
with open 无需手动书写close
用途:是python用来打开本地文件的,他会在使用完毕后,自动关闭文件,无需手动书写close()
with open (file = "你要打开的路径名(或保存内容的地址)",mode = "r/w/a",encoding = "utf-8") as f1:
data = f1.read/write()
print(data)
按行读取文件内容
read
方法默认会把文件的 所有内容 一次性读取到内存
如果文件太大,对内存的占用会非常严重
读取大文件的正确姿势
readline
方法
readline
方法可以一次读取一行内容
方法执行后,会把 文件指针 移动到下一行,准备再次读取
# 打开文件
file = open("README")
while True:
# 读取一行内容
text = file.readline()
# 判断是否读到内容
if not text:
break
# 每读取一行的末尾已经有了一个 `\n`
print(text, end="")
# 关闭文件
file.close()
循环读取文章内容并且每隔1s打印
with open(PATH,'r',encoding = 'utf-8') as file:
for line in file:
print(line,end='')
time.sleep(1)
readlines
方法
readlines
是逐行读取每一行的内容,将他们存储到一个list中
#function:
#para: Path:file路径
def Open_file(Path):
try:
with open(Path,'r',encoding = 'utf-8') as file:
list = file.readlines()
return list #返回list
except FileExistsError:
print('无法打开指定文件')
except LookupError:
print('指定了未知编码')
except UnicodeDecodeError:
print('文件解码错误')
finally:
pass
if __name__ == '__main__':
file_list = Open_file(Path)
for line in file_list:
print(line)
time.sleep(1)
案例 —— 复制文件
小文件复制
打开一个已有文件,读取完整内容,并写入到另外一个文件
# 1. 打开文件
file_read = open("README")
file_write = open("README[复件]", "w")
# 2. 读取并写入文件
text = file_read.read()
file_write.write(text)
# 3. 关闭文件
file_read.close()
file_write.close()
大文件复制
打开一个已有文件,逐行读取内容,并顺序写入到另外一个文件
# 1. 打开文件
file_read = open("README")
file_write = open("README[复件]", "w")
# 2. 读取并写入文件
while True:
# 每次读取一行
text = file_read.readline()
# 判断是否读取到内容
if not text:
break
file_write.write(text)
# 3. 关闭文件
file_read.close()
file_write.close()