文件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
绝对路径的缺点:
