文件操作
打开文件
-
open(file, mode='r', encoding=None, errors=None)
- file: 表示要打开的文件, 可以是字符串或整数.
- mode: 设置文件打开模式. 可以进行组合(如mode='rt', 只读文本文件).
- encoding: 指定打开文件时的文件编码, 默认是UTF-8, 主要用于打开文本文件.
- errors: 指定在文本文件发生编码错误时如何处理. errors="ignore", 表示忽略错误,程序继续执行.
f = open('test.txt', 'w')
write("Hello")
print("1. 创建文件, 写入Hello")
f = open('test.txt', 'a')
f.write(" World")
print("2. 追加 World")
文件打开模式 |
说明 |
mode='t' |
文本文件模式. |
mode='b' |
二进制文件模式. |
mode='r' |
只读模式. |
mode='w' |
只写模式,不能读内容. 如果文件不存在, 则创建文件; 如果文件存在, 则覆盖文件的内容. |
mode='x' |
独占创建模式. 如果文件不存在, 则创建并以写入模式打开; 如果文件存在, 则引发FileExistsError异常. |
mode='a' |
追加模式, 不能读内容. 如果文件不存在, 则创建文件; 如果文件存在, 则在文件末尾追加. |
mode='+' |
更新(读写)模式, 必须与r, w或a组合使用, 才能设置文件为读写模式. |
关闭文件
-
close()
: 在打开文件后, 如果不再使用该文件, 则需将其关闭.
f_name = "test.txt"
f = None
try:
f = open(f_name, 'r')
print("打开文件成功. ")
content = f.read()
print(content)
except FileNotFoundError:
print("文件不存在! ")
except OSError:
print("处理OSError异常")
finally:
if f is not None:
f.close()
print("文件已关闭. ")
-
with as
代码块: 在as后面声明一个资源变量, 代码块结束后自动释放资源.
f_name = "test.txt"
with open(f_name, 'r') as f:
content = f.read()
print(content)
读写文本文件
-
read(size=-1)
: 从文件中读取字符串. size限制读取的字符数, 默认没有限制.
-
readline(size=-1)
: 在读取到换行符或文件尾时返回单行字符串. 如果已经到文件尾, 则返回一个空字符串.
-
readlines()
: 读取文件数据到一个字符串列表中, 每一行数据都是列表的一个元素.
-
write(s)
: 将字符串s写入文件, 并返回写入的字符数.
-
writelines(lines)
: 向文件中写入一个字符串列表. 不添加行分隔符, 因此通常为每一个末尾都提供行分隔符,
-
flush()
: 刷新写缓冲区, 在文件没有关闭的情况下将数据写入文件中.
f_name = r"test.txt"
with open(f_name, 'r', encoding='gbk') as f:
lines = f.readlines()
print("读取成功: ")
print(lines)
copy_name = r"copy.txt"
with open(copy_name, 'w', encoding='utf-8') as c:
c.writelines(lines)
print("写入成功")
# 读取成功:
# ['Hello. \n', 'My name is Khru. \n', 'Nice to meet you! \n', '浣犲ソ. ']
# 写入成功
读写二进制文件
f_name = "screen.png"
with open(f_name, 'rb') as f:
b = f.read()
copy_name = "screen1.png"
with open(copy_name, 'wb') as c:
c.write(b)