您的位置:首页 > 编程语言 > Python开发

Python持久存储--数据保存到文件

2017-05-05 09:56 477 查看
将基于内存的数据存储到磁盘上,这正是持久存储的含义。

try:
data = open('scatch.txt')
man = []
woman = []
for each_line in data:
try:
(role,line_spoken) = each_line.split(':',1)
line_spoken = line_spoken.strip()
if role == 'Man':
man.append(line_spoken)
elif role == 'Woman':
woman.append(line_spoken)
except ValueError:
pass
print(man)
print(woman)
data.close()
except IOError:
print("The file is missing!")


运行结果:

['Hi.', 'How are you?', "I'm file,too.", 'Thanks.']

['Hi.', "I'm fine,thank you.And you?", 'Okay.hi:']

==========================================================

Python的open()BIF除了可以打开文件来读文件,当然也可以写文件,不是吗?

使用open()BIF打开磁盘文件时,可以指定使用什么访问模式。默认地,open()使用模式r表示读,所以不需要专门指定r模式,要打开一个文件完成写,需要使用模式w:

out = open("data.out","w")

默认地,print()BIF显示数据时会使用标准输出(通常是屏幕)。要把数据写至一个文件,需要使用file参数来指定所使用的数据文件对象。

print("Today is a good day.",file= out)

完成工作时,一定要关闭文件,确保所有数据都写至磁盘。这称为刷新输出(flushing)。

out.close()



r:读。r+:读写。不创建。覆盖写。

w:写。w+:读写。创建。覆盖写。

a:写。a+: 读写。创建。附加写。

out.seek(0)

out.read()

解决方案:读取之前将指针重置为文件头。

try:
data = open('scatch.txt')
man = []
woman = []
for each_line in data:
try:
(role,line_spoken) = each_line.split(':',1)
line_spoken = line_spoken.strip()
if role == 'Man':
man.append(line_spoken)
elif role == 'Woman':
woman.append(line_spoken)
except ValueError:
pass
data.close()
except IOError:
print("The file is missing!")
try:
out_man = open("man_data.txt","w+")
out_woman = open("woman_data.txt","a+")
print(man,file=out_man)
print(woman,file = out_woman)
out_man.seek(0)
out_woman.seek(0)
out_man.read()
out_woman.read()
out_man.close()
out_woman.close()
except IOError:
print("File error")
改进后:

try:
out_man = open("man_data.txt","w+")
out_woman = open("woman_data.txt","a+")
print(man,file=out_man)
print(woman,file = out_woman)
out_man.seek(0)
out_woman.seek(0)
out_man.read()
out_woman.read()
except IOError:
print("File error")
finally:
out_man.close()
out_woman.close()


不论什么情况,finally块儿总会执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐