打开网易新闻 查看精彩图片

本月21号的一篇文章(54课),尝试着编写了一个简单的学生通讯录,学生的信息是以列表的数据类型,单个元素以字典为存储形式。这几天学了文件的读写,尝试着把内容保存为文件。

打开网易新闻 查看精彩图片

假设学生通讯录已经被输入进来,总共五个学生的信息,每个信息包含姓名,年龄和电话三个内容。

永不重复的文件名

打开网易新闻 查看精彩图片

为了方便后续的操作,我们借助时间函数生成一个带有时间的文件名

这个文件名包括三个部分,前缀,时间,后缀。

文件的前缀表示是个备份文件,后缀也是备份文件的常用后缀,当然,你也可以起个别的名字,只要你自己别忘记就好。

时间由时间函数生成,格式化当地时间,输出为字符串,以年年月月日日,也就是YYMMDD或yymmdd形式,今天的话就是230127。

转换格式

打开网易新闻 查看精彩图片

写入时,是以字符串的形式,所以要把存储的内容转换为字符串类型。先建立一个空的列表,然后把每个元素(字典)依次转换为字符串类型。

打开网易新闻 查看精彩图片

因为字典里已经使用了单引号,所以外括的,是双引号。反过来,如果里面用了双引号,外面要用单引号,要不然Python会找不到成双配对的相同的引号,发不干活的。

打开网易新闻 查看精彩图片

太长了,没法显示全。

写入文件

打开网易新闻 查看精彩图片

我们用for循环把列表中的每个元素(字符串),写入到文件里,并保存(关闭)。

打开网易新闻 查看精彩图片

直接双击生成的文件,因为bak文件PyCharm没有对应可以打开的应用,所以需要你指定下,告诉它这是text文本文件即可。

中文乱码

打开网易新闻 查看精彩图片

打开后,发现全是乱码。

打开网易新闻 查看精彩图片

我们在创建文件时,没有写明中文的编码造成的。

打开网易新闻 查看精彩图片

写了之后,就会发现能够正常显示了。可是,我们输入的内容呢?

正常写入

打开网易新闻 查看精彩图片

我们之前错用了转换前的原始列表students,没有用转换后的字符串列表content,换过之后就好了。

打开网易新闻 查看精彩图片

打开刚才保存的文件,发现显示了一整行,还没有到头,查看起来很是不便。

换行美化

打开网易新闻 查看精彩图片

为了让每个单独的列表元素单独一行,需要在每个转后的字符串的后面加上换行符‘\n’。

打开网易新闻 查看精彩图片

这样看起来,是不是好受了许多。

PS:本文代码基于Windows 10,Python 3.10.4。

打开网易新闻 查看精彩图片