Python文件操作
Python文件操作
文件的编码
计算机只能识别:0和1,我们需要使用编码技术(密码本)将内容翻译成0和1存入。计算机中有许多可用编码:UTF-8、GBK、Big5等,不同的编码,将内容翻译的二进制也是不相同的。
编码:
- 编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。
- 编码有许多中,我们最常用的是UTF-8编码
文件的读取
文件的操作步骤:
- 打开文件
- 读写文件
- 关闭文件
注意:可以只打开和关闭文件,不进行任何读写
文件的操作方法:
-
open(name, mode, encoding)
示例代码:f = open('文件地址', 'r', encoding=”UTF-8)
name
:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。mode
:设置打开文件的模式(访问模式):只读、写入、追加等。r
:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。w
:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。
如果该文件不存在,创建新文件.a
:打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。
如果该文件不存在,创建新文件进行写入。
encoding
:编码格式(推荐使用UTF-8)
-
read()
示例方法:文件对象.read(num)
- num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
-
readlines()
示例方法:文件对象.readlines()
- readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
-
readline()
示例方法:文件对象.readline()
- 一次读取一行内容
-
for循环读取文件
for line in open("文件地址", "r"): print(line)
-
close
示例方法:文件对象.close()
- 关闭文件对象,(如果不关闭文件对象文件会被一只占用着)
-
with open
- 通过在with open的语句块中对文件进行操作
- 可以在操作完成后自动关闭close文件,避免遗忘掉close方法
- 语法:
with open("文件地址", "r") as f: f.readlines()
操作方法汇总
编号 | 方法 | 描述 |
---|---|---|
1 | 文件对象 = open(file, mode, encoding) | 打开文件获得文件对象 |
2 | 文件对象.read(num) | 读取指定长度字节,不指定num读取文件全部 |
3 | 文件对象.readline() | 读取一行 |
4 | 文件对象.readlines() | 读取全部行,得到列表 |
5 | for line in 文件对象 | for循环文件行,一次循环得到一行数据 |
6 | 文件对象.close() | 关闭文件对象 |
7 | with open() as f | 通过with open语法打开文件,可以自动关闭 |
# 打开文件
f = open("E:/test.txt", "r", encoding="UTF-8")
print(type(f))
# 读取文件 read()
print(f"读取10个字节的内容是:{f.read(10)}")
print(f"read方法读取全部内容是:{f.read()}")
f.close()
print("---------------------------------readlines------------------------------------")
# 读取文件 readlines()
f = open("E:/test.txt", "r", encoding="UTF-8")
lines = f.readlines() # 读取文件的全部行,封装到列表中
print(f"lines的对象类型是:{type(lines)}")
print(f"lines的对象内容是:{lines}")
f.close()
print("---------------------------------readline------------------------------------")
# 读取文件 readline()
f = open("E:/test.txt", "r", encoding="UTF-8")
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(f"第一行数据:{line1}")
print(f"第二行数据:{line2}")
print(f"第三行数据:{line3}")
f.close()
print("---------------------------------for循环------------------------------------")
# for循环读取文件行
f = open("E:/test.txt", "r", encoding="UTF-8")
for line in f:
print(f"每一行数据:{line}")
# 文件关闭
f.close()
print("---------------------------------with open------------------------------------")
# with open语法操作文件
with open("E:/test.txt", "r", encoding="UTF-8") as f:
for line in f:
print(f"每一行数据:{line}")
文件的写入
写入语法:open("文件名称", "w", encoding="UTF-8")
写入方法:
wirte()
,写入内容flush()
,刷新内容到硬盘中
注意事项:
w模式
,文件不存在,会创建新文件w模式
,文件存在,会清空原有内容close()
方法,带有flush()
方法的功能
# 打开不存在的文件
f = open("E:/gta5.txt", "w", encoding="UTF-8")
# wirte写入
f.write("Hello World!!!") # 将内容写入内存中
# flush刷新
f.flush() # 将内存中的积攒的内容,写入到硬盘的文件中
# 关闭文件
f.close() # close()方法,内置了flush的功能
# 打开一个存在的文件
f = open("E:/gta5.txt", "w", encoding="UTF-8")
# wirte写入
f.write("无敌")
# 关闭文件
f.close()
文件的追加
追加写入语法:open("文件名称", "a", encoding="UTF-8")
追加写入方法(和w模式一致):
wirte()
,写入内容flush()
,刷新内容到硬盘中
追加注意事项:
a模式
,文件不存在,会创建新文件a模式
,文件存在,会在原内容后面继续写入- 可以使用
\n
来写出换行符
f = open("E:/gta5.txt", "a", encoding="UTF-8")
# write写入 flush刷新
f.write("炒鸡")
# close关闭
f.close()