《Head_First_Python》4 持久存储

以写模式打开文件

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

aa=open("data.haha","w")

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

print("adfasdf",file=aa)

完成工作时,一定要关闭文件,确保所有数据都写至磁盘。这成为刷新输出,这一点非常重要:

aa.close()


GEEK BITS

使用访问模式w时,Python会打开指定的文件来完成写。如果这个文件已经存在,则会清空它现有的内容,也就是完全清楚。要追加到一个文件,需要使用访问模式a。要打开一个文件来完成写和读(不清楚),需要使用w+。如果想打开一个文件完成写,但是这个文件并不存在,那么首先会为你创建这个文件,然后再打开文件进行写。


 用finally扩展try

try:

.........

except ..

.......

finally:

..........




如果没有出现任何运行时错误,会执行finally组中的代码。如果出现异常,会执行except组,然后运行finally组。


import os
print(os.getcwd())
os.chdir('D:/CY')
try:
    data=open('missing.txt')
    print(data.readline(),end='')
except IOError as err:
    print('file error'+str(err))
finally:
    if 'data' in locals():
        data.close()



#locals() BIF 会返回当前作用域中定义的所有名的一个集合。



用with处理文件

with open('1.txt','w')

使用with时,不在需要操心关闭打开的文件,因为Python解释器会自动为你考虑这一点。

with语句利用了一种名为上下文管理协议的Python技术。


#呵呵哒
import os
import sys
os.chdir('C:/')
def print_lol(the_list,indent=False,level=0,fh=sys.stdout):
    for each_item in the_list:
        if isinstance(each_item,list):
            print_lol(each_item,indent,level+1,fh)
        else:
            if indent:
                for tab_stop in range(level):
                    print("\t",end='',file=fh)
            print(each_item,file=fh)

man=[123,123,124,124,[123,123,32]]
other=[123,123,124,124,[123,123,32]]
try:
    with open('man.txt','w') as man_file:
        print_lol(man,fh=man_file)
    with open('other_data.txt','w') as other_file:
        print_lol(other,True,fh=other_file)
except IOError as err:
    print('file error'+str(err))


用DUMP保存,用LOAD恢复 

import pickle
with open('11','wb') as mmm:
    pickle.dump([1,2,'erwe'],mmm)
with open('11','rb') as aaa:
    a_list=pickle.load(aaa)
print(a_list)
 
 
 
BULLET POINTS
  1. strip()方法可以从字符串去除不想要的空白符。
  2. print() BIF的file参数控制将数据发送/保存到哪里
  3. finally组总会执行,而不论try/except语句中出现什么异常。
  4. 会向except组传入一个异常对象,并使用as 关键字赋至一个标识符。
  5. str() BIF可以用来访问任何数据对象(支持串转换)的串表示
  6. locals()BIF返回当前作用域中的变量集合。
  7. in操作符用于检查成员关系。
  8. “+”操作符用于字符串时将联接两个字符串,用于数字时则会将两个数相加。
  9. with语句会自动处理所有已打开文件的关闭工作,及时出现异常也不例外。with语句也使用as关键字。
  10. sys.stdout是Python中所谓的“标准输出”,可以从标准库的sys模块访问。
  11. 标准库的pickle模块允许你容易而高效地将Python数据对象保存到磁盘以及从磁盘恢复。
  12.  pickle.dump()函数将数据保存到磁盘
  13. pickle.load()函数从磁盘恢复数据。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值