python怎么把数据保存多久_【工科生日常】python数据保存到文件,持久储存数据...

小伙伴们大家好啊,up主又来了~

不知道到同学们还记不记得,上一次我跟大家提起过我的好朋友豪哥,转行做了电影导演,我还帮他才处理了一下剧本。可惜,他的导演生涯时如此的短暂,就上个礼拜嘛,他突然之间就被电影公司给撤职了,现在只能在剧组里干干文职,为了他的隐私着想,我也就不说为什么了。好像是他因为一些作风问题被举报了,不知是真是假,反正我是绝对相信他的。

现在情况是这样的,新导演让他把先前的剧本分成两份,也就是Man一份,Other Man另一份,再保存到文件之中,这样就比较方便演员准备台词。

我在上一次处理剧本后的代码是这样的:

现在我要将其稍作修改,把两个角色的台词都分开来。其实想想并不难,就是再创建两个列表,然后分别将内容加入进列表而已。

以上的步骤,概括来讲的话,就是打开某一个文件,读取文件中的内容,经过处理之后在shell的窗口之中输出。其实只是运用了open()的读模式,open()的默认模式就是读模式,只能读取文件中的内容,不能写入别的内容。要想写入内容,就必须开启写模式,开启方法如下:

如果文件目录下没有代码中开启的文本,python就会在此目录下创建一个文本。

只要有开启写模式的方法,就可以将先前区分开的台词写入相应的文件中。代码如下:

在执行代码之后,看看我的目录下有没有出现man__file和other_file

Ok,很明显,我已经成功了。但是为了保险起见,还是对代码进行一点小小的修改,在代码执行的过程当中,会出现以下这种情况:在向文件写入内容的过程中,出现了错误,异常处理代码try/except机制会使代码跳到except进行执行,这样一来,就会跳过文件关闭的两条代码,数据可能会遭到破坏。

解决这个问题可以用到finally组来扩展try语句。

如果是用了finally组,无论是上方代码成功执行还是中途出错,最终都会执行关闭文件的程序。至于locals(),是为了确认文件是否真实存在,如果打开的文件根本不存在,执行关闭文件的代码时,就会出现错误。因此,保险起见,加入locals()。

目前的代码,如果出现异常,就会输出File error,但其实,这样的输出太笼统了一点,有时候我需要知道我的代码到底哪里出现了异常,于是我就可以如下处理except组:

如此一来,如果代码执行,遇到了错误,我也可以知道错误的原因是什么,进而改正我的代码。

Open()总感觉挺麻烦的有没有,每次用完之后还必须要close(),如果忘了关闭文件就会导致数据出错。

其实还有一种打开文件的方法,with open(),使用with时,不需要担心关闭文件的问题,python会自动帮我关闭,所以,我的代码还可以写成:

在代码编写完成之后,我尝试着用shell输出我的man_data.txt,发现,man的台词变成了一个很长很长的字符串,偶,这其实不是我想得到的内容。

回忆一下,我好像之前有帮豪哥做过一个专门处理长字符串的代码,但是有点不记得了好像,问题不大,看一下https://www.bilibili.com/read/cv1127358就好了。

然后我们可以在现有的代码下面加入一段:

Ok,我观察了一下前一段代码,man和other man的数据都保存在了man_file和other_file之中。因此我需要将van函数进行一下修改,多增加一个变量file_name,目的是在进行print的时候,能够将我需要写入的内容写入我指定的文件。

接下来,打开我的文件,确认一下内容:

Ok,事实已经证明,我写入的两个文件已经没有问题。

不过,如果抛开演员和剧本的事情,我在编程学习的过程之中,我将我的数据储存在文本之中,某一天我想用到这些数据,将他们重新读回的话,目前这样是否方便?

显然,不是很方便,我必须先写代码把数据从文本中读出,再将它们放入到列表中。

Python提供了pickle模块可以解决上述的这个问题,它可以保存和加载几乎任何的数据对象,包括列表。网上有人把这个过程称为数据腌制,大家都知道腌制过的食物比较便于储存,同样的,一旦将数据腌制之后,它就将永久储存。

腌制储存方法如下:

腌制完毕,如果再打开man_data.txt和other_data.txt会发现,这两个文件中的内容变得很奇怪,甚至会出现乱码。这其实是正常的情况,腌制过的数据,人类会难以识别,但对python而言,就是非常方便读懂的了。

现在再试试看读取数据:

完美,我又能输出我想要的文字啦~有了腌制数据的功能,我就能长久的保存的重要数据,在我想要的时间将它们调用,真的太棒了。

以上便是这一期,关于如何将数据保存成文件的全部内容,如果有小伙伴想要提一些建议或者问题,欢迎在评论区留言。

啦啦啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值