1.文件的打开和关闭
假设我们有一个文件,名为"test.txt",
内容为:
40
50
60
用python打开这个文件有两种操作:
方法1:
try:
f = open('test,txt', 'r')
print(f.read())
finally:
if f:
f.close()
文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:
方法2:
with open("test.txt") as f:
f.read()
这种带有with的方式系统可以自动关闭文件,不需要手动关闭。
2.文件的读取(read(),readline(),readlines())
在上面的代码执行后,f是一个文件的object对象,我们需要用内置的函数读取文件,文件的读取有三种方式:
read():
with open("test.txt") as f:
a = f.read()
print(a)
print(type(a))
###输出
40
50
60
<class "str">
read()函数读入的是一个大字符串
read()的好处:
- 方便、简单
- 一次性独读出文件放在一个大字符串中,速度最快
read()的坏处:
- 文件过大的时候,占用内存会过大
readline():
:
with open("test.txt") as f:
a = f.readline()
print(a)
print(type(a))
###输出
40
<class "str">
readline是逐行读入,40后面有一行空格是因为文档本身第一行后面是带有一行换行符的。
readline()的利端:
- 占用内存小,逐行读取
readline()的弊端:
- 由于是逐行读取,速度比较慢
readlines()
with open("test.txt") as f:
a = f.readlines()
print(a)
print(type(a))
###输出
['40\m','50\n','60\n']
<class "list">
readlines()是一次读取全部内容,返回的是一个List数组,所以我们在使用时可以直接用for遍历
readlines()的利端:
- 一次性读取文本内容,速度比较快
readlines()的弊端:
- 随着文本的增大,占用内存会越来越多