python可以通过创建一个属于 file 类的对象并适当使用它的 read 、 readline 、 write 方法
来打开或使用文件,并对它们进行读取或写入。读取或写入文件的能力取决于你指定以何种
方式打开文件。最后,完成了文件,你可以调用 close 方法来告诉 Python 我们已经完
成了对该文件的使用。
OK ,我们来看一下实例
poem = '''\
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
'''
f = open('poem.txt','w')
f.write(poem)
f.close()
f = open('poem.txt')
while True:
line = f.readline()
if len(line)==0:
break
else:
print(line)
f.close()
对于 open(filename,mode)函数,下面对mode参数做详细接介绍
不同模式打开文件的完全列表:
模式
|
描述
|
r
|
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
|
rb
|
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
|
r+
|
打开一个文件用于读写。文件指针将会放在文件的开头。
|
rb+
|
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
|
w
|
打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
|
wb
|
以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
|
w+
|
打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
|
wb+
|
以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
|
a
|
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
|
ab
|
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
|
a+
|
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
|
ab+
|
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
|
f.read()
为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
f.readline()
f.readline() 会从文件中读取单独的一行。换行符为 '\n'。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
f.readlines()
f.readlines() 将返回该文件中包含的所有行。
如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。
f.write()
f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。
f.tell()
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
f.close()
在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。
pickle 模块
Python 提供了一个叫作 Pickle 的标准模块,通过它你可以将任何纯 Python 对象存储到一
个文件中,并在稍后将其取回。这叫作持久地(Persistently) 存储对象。
看一个实例
import pickle
shoplistfile = 'shoplist.data'
shoplist = ['apple','mango','carrot']
f = open(shoplistfile,'wb')
pickle.dump(shoplist,f)
f.close()
del shoplist
f = open(shoplistfile,'rb')
storelist = pickle.load(f)
print(storelist)
f.close()
['apple', 'mango', 'carrot']
Process finished with exit code 0
我们可以从文件中读出来还是list的数据类型,恢复到存储文件前
pickle.dump(obj, file, [,protocol])
写入函数
pickle
.
load
(
file
)
读取函数,从file中读取一个字符串,重构为python原来的对象