编程中经常需要读写文件,就需要用到内置函数
open, 语法如下:
open(
file,
mode='r',
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None,
)
Docstring:
Open file and return a stream. Raise IOError upon failure.
1. 打开文件
open函数第一个参数是file
, 一般指的是文件的路径,包含绝对路径和相对路径。
- 打开
绝对路径
或者相对路径
的文件,默认是以只读
的模式打开
f = open('/home/tafan/workspace/file.txt')
#f = open('../file.txt')
print(f)
<_io.TextIOWrapper name='/home/tafan/workspace/file.txt' mode='r' encoding='UTF-8'>
2. 关闭文件
当打开文件后,记得使用close()
方法关闭文件。不及时关闭文件,会出现许多问题。
- 文件对象会
占用操作系统的资源
,操作系统同一时间能打开的文件数量是有限的 - 写入文件后可能由于系统崩溃导致
写入数据丢失
,因为Python可能缓冲你写入的数据(将数据暂时存储在某个地方,以提高效率) - 容易被其他程序
篡改数据
如何安全有效的关闭文件
, 可以用到try...finally和with open语句。
- 使用
try...finally
, 可以有效的防止读写及其他函数出错导致没有及时关闭文件
f = open('file.txt', 'w+')
try:
f.write('example')
finally:
file.close()
- 使用
with open
,到达该语句末尾时,将自动关闭文件,即便出现异常亦如此,推荐使用
with open('file.txt', 'w+') as f:
f.write('example')
f.write('example too')
#testing
Traceback (most recent call last):
File "a.py", line 5, in <module>
f.write('example too')
ValueError: I/O operation on closed file.