【Python 3】持久存储

持久存储

如何将数据持久到磁盘?

strip

>>> str2='  123   '
>>> print(str2.strip())
123
>>> 

相当于Java的trim

open写

"""这个Python中的注释"""
print('start')

names=[]
descs=[]

try:
    data=open('test.txt')
    for dd in data:
        try:
            (name,desc)=dd.split(':',1)
            dd = dd.strip()
            if name=='乔丹':
                names.append(name+'23')
            elif name=='科比':
                names.append(name+'24')
            elif name=='麦迪':
                names.append(name+'1')
            descs.append(desc)
        except:
            pass
    data.close()
except:
    print('the file is missing')
    
try:
    print(names)
    print(descs)
    data_name=open('name.txt','w')
    data_desc=open('desc.txt','w')
    print(names,file=data_name)
    print(descs,file=data_desc)
    data_name.close()
    data_desc.close()
except:
    print('IO exception')

print('end')



================== RESTART: F:\Improve\Python\py\open_op.py ==================
start
['乔丹23', '科比24', '麦迪1', '乔丹23', '麦迪1']
['nba最牛逼的人\n', '投篮美如画\n', '干拔我最爱\n', '无解后仰\n', '35秒:13分']
end
运行.py,可以用idle打开它,然后F5运行


try/except/finally

"""这个Python中的注释"""
print('start')

names=[]
descs=[]

try:
	data=open('test.txt')
	for dd in data:
		try:
			(name,desc)=dd.split(':',1)
			dd = dd.strip()
			if name=='乔丹':
				names.append(name+'23')
			elif name=='科比':
				names.append(name+'24')
			elif name=='麦迪':
				names.append(name+'1')
			descs.append(desc)
		except:
			pass
except:
	print('the file is missing')
finally:
        data.close()
	
try:
	print(names)
	print(descs)
	data_name=open('name.txt','w')
	data_desc=open('desc.txt','w')
	print(names,file=data_name)
	print(descs,file=data_desc)
except:
	print('IO exception')
finally:
        data_name.close()
        data_desc.close()

print('end')

和Java差不多。

区别是:资源对象不需要定义在try外面。

try/with/except

"""这个Python中的注释"""
print('start')

names=[]
descs=[]

try:
        with open('test.txt') as data:
                for dd in data:
                        try:
                                (name,desc)=dd.split(':',1)
                                dd = dd.strip()
                                if name=='乔丹':
                                        names.append(name+'23')
                                elif name=='科比':
                                	names.append(name+'24')
                                elif name=='麦迪':
                                	names.append(name+'1')
                                descs.append(desc)
                        except:
                                pass
except IOError as err:
	print('the file is missing')
	print(err)

	
try:
	print(names)
	print(descs)
	data_name=open('name.txt','w')
	data_desc=open('desc.txt','w')
	print(names,file=data_name)
	print(descs,file=data_desc)
except:
	print('IO exception')


print('end')


相当于Java的try-resource。

with

>>> with open('test.txt') as tt:
	print(tt.readline())

	
    乔丹:nba最牛逼的人

>>> 

新用法。

pickle

Python的一个标准库。

import pickle

with open('tmp.pickle','wb') as mydata:
    pickle.dump([1,2,3,["haha","hello"]],mydata)
with open('tmp.pickle','rb') as mydata2:
    a_list=pickle.load(mydata2)
print(a_list)

以.py的文件进行运行

pickle.dump:保存数据

pickle.load:恢复数据

wb:写,以二进制流

总结

strip

print

finally

except

str()

locals()

in

with

sys.stdout

pickle

pickle.dump

pickle.load

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值