文件读写
文件的读写操作
with open('test.txt', 'w+', encoding='utf-8') as fn: # 以'utf-8'格式,读写模式打开test.txt文件,若文件不存在,则创建
fn.write('XXX') # 在光标指向位置写入数据
fn.seek(6) # 将光标写在第6个字节处(光标指向的位置的就是接下来文件操作的位置)
fn.read() # 读出光标后的所有数据
常用的文件操作模式如下表:
符号 | 描述 |
---|---|
b | 二进制模式 |
+ | 可读可写 |
r | 以只读方式打开文件,文件的指针将会放在文件的开头 |
rb | 以二进制格式打开一个文件用于只读 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头 |
rb+ | 以二进制格式打开一个文件用于读写 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,原有内容会被覆盖。如果该文件不存在,则创建新文件 |
wb | 以二进制格式打开一个文件只用于写入 |
w+ | 打开一个文件用于读写。与 r+ 的区别在于若文件不存在 w+ 还会生成该文件 |
wb+ | 以二进制格式打开一个文件用于读写 |
a | 追加写入,若该文件已存在,文件光标指向文件的结尾。若文件不存在,将创建新文件执行写入 |
ab | 以二进制格式打开一个文件用于追加 |
a+ | 打开一个文件用于读写,与 w+ 的区别在于,以 a 模式打开的文件,光标会被指向文件结尾 |
ab+ | 以二进制格式打开一个文件用于追加 |
临时文件/目录
临时文件的好处在于:文件在关闭后会自动被删除,在生成中间文件时方便处理。
from tempfile import TemporaryFile, TemporaryDirectory
# 建立临时文件夹,该临时文件夹会在程序运行结束后被自动删除
TemporaryDirectory()
# 建立临时文件,参数分别为模式,文件生成目录,后缀,是否在close()后被自动删除
TemporaryFile('w', dir=path, suffix='.txt', delete=False)
file_temp_file.py
# -*- coding: utf-8 -*-
from tempfile import TemporaryFile, TemporaryDirectory
with open('test.txt', 'w+', encoding='utf-8') as fn: # 以'utf-8'格式,读写模式打开test.txt文件,若文件不存在,则创建
fn.write('Hello World') # 写入数据
print(f'fn: {fn.read()}') # 此时光标在写入的文件末尾(光标指向的位置的就是接下来文件操作的位置)
fn.seek(6) # 将光标写在第6个字节处
print(f'fn: {fn.read()}') # 读出光标后的所有数据,读出后,光标又会被写入文件末尾
dir_test = TemporaryDirectory() # 建立临时文件夹,该临时文件夹会在程序运行结束后被自动删除
print(dir_test.name)
# 建立临时文件,参数分别为模式,文件生成目录,后缀,是否在close()后被自动删除
with TemporaryFile(mode='w', dir=dir_test.name, suffix='.log', delete=False) as fn:
print(fn.file)
执行结果
fn:
fn: World
C:\Users\xxx\AppData\Local\Temp\tmp3zj5xzf8
<_io.TextIOWrapper name=3 mode='w' encoding='cp936'>