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

将基于内存的数据存储到磁盘上,这正是持久存储的含义。


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()

Python持久存储--数据保存到文件_第1张图片

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块儿总会执行。



你可能感兴趣的:(Python基础语法)