文件I/O简介
- IO是两个单词的缩写,分别是Input和Output,输入和输出
- IO包含控制台IO以及文件IO
文件I/O的基本流程
- 打开文件
- 文件读写
- 关闭文件
打开文件
使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
访问模式对应的功能如下:f = open(文件名,访问模式)
文件名:文件的相对路径或者绝对路径
访问方式:文件的访问方式有读、写、追加
功能 | r | r+ | w | w+ | a | a+ |
---|---|---|---|---|---|---|
读 | + | + | + | + | ||
写 | + | + | + | + | + | |
创建 | + | + | + | + | ||
覆盖 | + | + | ||||
指针在开始 | + | + | + | + | ||
指针在结尾 | + | + |
打开文件
f = open('a.txt')
关闭文件
读取或写出文件后,要使用close()
方法关闭文件
f.close()
注意:
一定要保证文件操作完之后要关闭掉,因为程序能打开的文件数量是有上限的,并且不关闭文件会造成内存泄漏
文件读取
read
read
方法读取,格式为:
f = open('a.txt', "r")
data = f.read(num) # 参数num: 默认-1,读取整个文件内容。可以指定num,读取num个数据
f.close()
读取整个文件内容
result = f.read()
读取5个数据
result = f.read(5)
readline
readline
指的是读取一行
result = f.readline()
也可以指定读取一行的n
个字符的数据
result = f.readline(15)
readlines
readlines
指的是读取整个文件,返回每一行数据的列表
result = f.readlines()
文件写入
write
write
写入字符串到文件中
f = open('test.txt','w')
f.write('hello world')
f.close()
writelines
writelines
可以将容器中数据写入到文件中
lst = ['bill','gates','tom']
f = open('test.txt','w')
# 将列表中数据写入到文件中
f.writelines(lst)
f.close()
使用with
在处理文件对象时,最好使用 with
关键字。优点是,子句体结束后,文件会正确关闭,即便触发异常也可以。而且,使用 with
相比等效的 try-finally
代码块要简短得多:
# 读文件
with open('workfile.txt', encoding="utf-8") as f:
read_data = f.read()
with open('test.txt','w') as f:
f.write('hello world')
print(f.closed) # True
我们可以通过如下代码验证文件是否已经关闭:
f.closed
如果没有使用 with
关键字,则应调用 f.close()
关闭文件,即可释放文件占用的系统资源。
警告: 调用
f.write()
时,未使用with
关键字,或未调用f.close()
,即使程序正常退出,也 可能 导致f.write()
的参数没有完全写入磁盘。
通过 with
语句,或调用f.close()
关闭文件对象后,再次使用该文件对象将会出现异常。
常见乱码对照表
绝对路径和相对路径
绝对路径
绝对路径指的是在电脑硬盘上真正保存的路径,绝对路径在不同的操作系统上写法是不一样的
如下就是绝对路径写法:
D:\codespace\python\FristPython\a.txt
绝对路径的缺点: