粉丝1275获赞5333

同学们好,接下来呢我们来看一下拍摄软件呢应该如何打开,以及我们如何新建文件。呃,保存文件和运行,那么我们先在程序里面呢找到拍摄这个软件, 找到以后呢看到这个 idol 把它打开,那我们现在打开的呢是一个交互模式,在这个模式当中呢咱们可以进行简单的函数的验证,比如说我们现在呢要建立一个拍摄的文件,我们需要在发窑这个地方找到妞,发窑新建, 比如说咱们想要输出一段这个文字,一段字符吧, print, 然后括号里面呢是英文模式下的。呃,双引号,比如说咱们要输出一个。你好,那这个 时候呢就是我们要输入的输出的内容。呃,然后我们先点击发,要里面有一个保存,把它保存下来。嗯,咱们就暂时先保存到桌面啊,给他起一个名字。 好,嗯,考试的时候呢,他是要求自动保存的啊,那你就点击保存就可以了。 好,保存以后呢咱们就可以进行运行,那么运行呢?在这个地方这个 run 运行,他的快捷键呢是 f 五,我们点击一下。好,那么他就把这个你好输出了啊,这就是他的运行过程。

前面我们讲了写拍圣代码要新建一个文件,把拍圣代码写到文件里面,这样是没问题的,但问题是我们用的文本编辑器功能太单一了,首先如果我们写的代码有语法错误,他们有提示功能。其次是我们把代码保存之后,还要打开终端,然后在终端里面敲拍圣解释器,还要加上我们保存 文件的路径才能运行,看结果也只能在中端里面看。于是就有了一种文本编辑器,它集成了我们所需要的所有功能,能够在里面创建文件,我们在里面写代码的时候出现了语法错误,他也会自动提示。还有就是我们悄悄命令的开头,他能够有自动补全的功能, 很大程度上提升我们的开发效率,并且运行程序的时候他能够自动去掉拍摄显示器,运行之后也会自动把结果显示在这个编辑器里面,这种编辑器就叫集成开发环境。其实集成开发环境不止前面我说的这些功能,它包含了很多我们开发的时候所需要的各种方方面面的功能。在拍摄开发当中推 的集成开发环境就是拍枪,接下来我们就去下载一个这个拍枪,直接搜索拍枪就可以了, 这个就是拍家们的官网,进来之后点击这个下载,拍家们提供了两个版本,一个叫 pose 呢,就是专业版, 还有一个叫 come 的社区版,社区版是免费的,但功能很少,专业版功能很多,但他是收费的,我还是推荐你用这个专业版,你可以花钱自己去买一个注册码,或者去网上找一些其他人分享的注册码,你也可以去某宝买,相对便宜一点, 一定不要去网上找什么破解版的安装包,你去看我前面有一期关于病毒的视频就明白了,你要是麦克,你就选麦克下载就好了,我下载这个温豆子的专业版, 下载完成之后我们来安装一下。安装步骤也没什么可讲的,很简单,直接下一步,下一步就可以了, 这里可以都勾选上。安装完成之后我们打开看看, 这个是让我们导入以前的配置,我没有配置就直接点 ok 就行了,然后选择这个,这就是让我们输入激活码,我这里已经提前在某宝上买了一个,很便宜,你也可以自己去买一个,把激活码复制进来之后点确定,这样我们的拍下我们就可以使用了。

这是宝宝在学编程第一次线上视频,我们会在接下来的 视频里面带领大家学习拍摄的基础知识和入门知识,带领大家从零开始了解和学习拍摄这门是二编程语言, 这是我们宝宝这个编程的第一次线上视频,然后后边会有更多更有趣的内容会在今后的日子里面给大家分享出来。然后我们本期延续着上一期的视频,给大家 教大家如何安装 aneco anycode 的一个软件。然后这一期呢,我们是对 anicoda 里面的 spender 去快速的认知这个软件如何的使用。然后我们本期主要给大家讲解的是他的编码的区域, 还有控制台,数字区域,菜单栏,工具栏,还有他的文件区域这四个模块,然后带领大家能够快速的去应用这个软件, 然后我们打开我们上期安装后的这个软件的这个界面,如果你还没有安装,可以去查看我们上一集公众号发出来的文章,然后学 学习一下如何安装,如果你有什么疑问,还可以给我们发点私信,然后我们可以帮你去解决这个问题。然后我们言归正传,去看一下我们这个软件的界面。 首先我们进入这个界面之后,能够看到我们这个主要的空白区域会有一个留白的地方, 然后其实就是这个区域,这个区域呢其实就是我们这个 spider 的一个主要的编码区域, 编码区域其实就是说我们的日常的代码的编写,还有我们的 呃拍摄人员的编写内容啊,都是在这块区域来完成的。然后我们在上一期的视频里面给大家讲解了如何编写拍摄的第一行代码,那我们今天 在这里再做一次重复的事情,将这个第一第一行代码在这里面再进行编写一下,我们试一下第一行代码, 然后我们去哈喽 哈喽,然后我们去简单的执行一下,看会有一个什么样的效果。 然后呢我们会在右下角的地方,其实这个区域我们可以看到在这里面说出了一个哈喽的字符,然后呢这个区域呢 细心的小朋友其实已经发现了,在我们左侧编码区编写的这一行代码,通过我们的词形之后呢,在我们的右 右下方的康守区域就输出了我们的一个代码的执行的结果。那右侧这个康守区域他代表着什么含义呢?他其实就是代表的我们的控制台的输出区域, 控制台的输出区域他其实是将我们左侧区域所进行的编码内容在右侧进行控制台的一个输出展出,然后方便大家对自己编码的内容进行一个 啊信息输出的一个可说话的一个展示区域。然后我们再温习一下上面一次上面的这个区域啊,第一是左侧这个区域是属于边 编码区域,那这个区域呢?它属于控制台输出区域,左侧的编码区域和右下角的这个烫手控制台输出区域是我们在 今后的编码学习里面应用最多,而且需要 掌握和应用的两个区域,他也是我们呃往后里面应用最多的一个两个核心区域。那细心的小朋友们还可以看到我们的右上角,右上角的有一个服药 explain, 他这里主要是展示的我们的一个文件区域, 文件区域比如说当前现在这个区域代表什么含义呢?现在这个区域代表的是我们的文件的一个预览, 他就是说我们现在的一个拍摄文件叫做 demo 拍摄,这是我们今天的一个第一个 脚本文件,第一个脚本文件他的存放的一个位置,以及他的一个预览图都可以在这里面进行查看。那他其实还有很多小的一个 会计 table, 然后呢感兴趣的小朋友们可以后面可以进行自己查询一下,代表着不同的含义。然后我们今天不做主要的讲解,主要讲解会围绕着我们的日常学习里面 应用最多,又接触最多,需要我们时时机机,实际最需要掌握的一些核心又很重要的。 那我们刚才编写的第一行代码之后,我们的右侧就给我们输出了我们编码 执行的一个结果,那有的小朋友就想了,我们去执行一个代码之后会不会说,那我们下次把这个代码怎么保存起来呢? 保存起来就是我们需要学习的第一个事情,就是如何把自己编辑的代码保存起来,然后方便下一次再重新打开。然后我们可以看到我们的 最上方有一行不同的菜单栏,然后这个菜单栏呢就是我们整个 spider 里面的呃,他所提 共的所有的一个菜单的一个集合。那我们今天学习的第一个事情是如何保存,那如何保存?我们可以看待点击 fu 的时候, 它里面会有两个不同的,呃保存,像第一个是 sever 就是保存,一个是 sever 啊,另一个就是 另种为,那我们主要是说我们保存的时候可以进行两种操作,第一种是当我们边写代码之后, 我们在编辑代码之后,我们我们可以点击右左上角 我的 save, 那这个时候我们的文件就保存到了 demo 点拍摄的文件里面,交文文件里面。那另一种方式,比如说我们如何能够快捷的进行保存呢?那我们的 fellow 里面菜单 他提供了一个快捷键叫做 ctrl s, ctrl s, 我们可以通过快捷键快捷键的方式进行直接保存,那这个时候我们的文件同样也会保存到我们的脚本里头。那第三种方式是我们去编写我们的代码之后, 我们可以看到在他的工具栏里头会有一个小磁盘的一个文件,就是第三个,当你去点击这个文件的时候,你会看到他其实也是一个保存菜单栏里面的保存文件,叫做 这部分啊,也是快捷键 ctrls 的一个快捷键,那我们点击这个文件,它同样也可以起到保证文件的一个作用。 那我们现在呢就是除了保存之外,那我们比如说日常日常的开发里面,我们想在这个文件之外再重新建一个怎么办? 那我们可以去点一下这个 fell, new fell 就创建一个新的文件, 那我们也可以在 fio 里面 fio 菜单里头选择第一个操作菜单叫做妞 fio, 我们点击一下就可以看到在我们的呃代码编辑区能够看到他的。第二个 就是我们新建的拍身脚本文件,这个时候我们在此区域进行编写代码, 就可以在这个地方重新生成一个交锋文件,我们进行保存,他会提示我们一个保存的路径地址。这个时候我们将我们的 脚步文件呢重新定义一个名字,然后点击保存,就可以将脚本保存到我们的指定目录了。在我们的右上方区域呢,你可以看到我们新建的第二个 dem 哦,脚步文件已经生存在这个对应的目录下面, 然后我们学习这两个保存操作和轻键操作。之后啊我们还要学 学习的是如何去打开我们的脚本文件,就比如说你现在已经执行了你的今天你写的一个脚本,然后你累了,你休息,然后你过了一会又想发你刚才 新建的这个 dmo 二的一个拍摄文件拿出来,那怎么搞?怎么做?那我们现在就是再重新打开这个妇幼文件,我们看到在第二个菜单这里 我有一个 oppo, oppo 的一个操作按钮,我们点击 open, 那这个时候他会指引着我们到达一个目录的文件文件窗口, 那我们去选择我们上一次保存的脚本文件,点击它并且打开,那这个时候我们在编我们代码编辑区,我们的脚本文件就会重新打开, 那这样子我们就可以在我们的日常学习里面去编辑自己的代码,然后保存我们的代码,然后打开我们的代码, 掌握好这三个心键,保存编辑,打开 这四个基本操作之后,我们在日后的开发里面就可以对我们的 日常编码进行一个呃德行应锁的操作,那除此之外呢,我们可以哎去扩展一下我们的基础知识面,去了解一些会计的一个操作的按钮,那这个区域主要在什么地方? 呃,有一定基础知识的应该能够看得出来,我们在整个软件的界面的第二栏里头 有一行工具栏,那工具栏呢,其实是他对菜单里头的一些比较常用的呃应用,最多比较方便的一些功能提取出来,放到了我们的第二个栏里面。 哎,刚才在我们讲解如何保存的时候,我们有说到,在我们的工具栏的第三个按钮这个部分有一个 cf fl 的一个按钮,可以快捷的进行,保证我们的呃脚本脚本信息啊。 第二个呢,星星的小朋友也能看到,他除了第一个第二个之外,他后面有很多,但是 我们今天呢主要讲解,并且顺带的温习我们前面讲解的几个部分。第一个是 newfield, 除了我们的呃菜单里面的 newfield 之外,我们的工具栏提供了一个快捷的入口,可以快速的生成一个新的角关文件,那我们这样子就可以又生成了一个新的角关文件,供我们进行代码编写。 嗯,保存操作,可以继续点击我们的 sophia, 然后把我们的拍摄脚本文件进行正常的保存,这个时候又再一次提示我们 保存到指定的一个文件目录地址。好,我们点击保存,这个时候我们就剩下那三个交往文件。那我们, 嗯,关闭掉刚刚新建的这个戴帽衫的拍摄文件之后,我们通过工具栏提供了快捷打开文件脚本,呃,按钮重新打开我们的一个 啊脚本指定保存的目录,然后把拍正三的重新打开按,这个时候我们就掌握了我们日常 学习编码的时候要运用的四个最常见的一个功能,一个就是新建,第二个就是保存,第三个是编辑,第四个码就是打开。要学会这四个基本的常用操作之后,我们就可以比较轻松的 开启我们的拍神学习之旅了。那后面呢?这个软件他还有更多 很神奇的功能有待我们的开发。如果你想了解到更多的关于这个软件的一个操作跟学习,你可以下面自己去学习和探索一下他不同的功能, 不同的按钮代表着什么呢?什么样的含义?但如果你也有不一样的想法或者是有疑问,也欢迎你私信给我们,我们在这里等着你。好,我们这一期的视频就讲解到这里。

那这就是 spider 的一个主界面了啊,我们看一下左上方,这就是它的一个菜单栏, 这里呢,我们可以先把它调成汉语的,是吧?点击这个 tools, 然后这里有个 preferences, 点击之后打开它的设置窗口啊,左侧第二个 application, 这里有一个 advanced settings, 点击这里有个 language, 这里最后一个,这是简体中文,点击 apply, 确定啊,这个时候它会关闭,重新打开一下这个 spa 的啊。重启之后呢,我们看左上方,原本这些英文的菜单栏,现在变成中文了,是吧,这样的话, 大家很多功能自己看一看,基本上知道是干什么用的了啊。这里我们如果点击这个查看往下窗口布局,哎,这个地方有个叫 matlive 布局,那我们点击一下之后呢?我们看啊, 那之前使用过 matlive 的同学看到这样的一个布局,是不是感觉很亲切啊?在之前的视频里面也讲过 sband 的话,对经常使用 matlive 的同学会比较的亲切啊,那我们把它切换回去,那在菜单栏下方,这是快捷操作栏,这些操作在菜单栏里面都是有的,只不过比较常用,所以放在这方便我们去使用啊。 最常用的是这四个,这是用来运行代码的啊,第一个叫运行文件,第二个是运行当前单元格,这单元格的概念跟 matlive 里面单元格的概念是一样的啊,那这就是运行当前单元格,并跳转到下一个单元格,这个就是运行选 选中的代码或者当前行,然后再往下这个区域,这就是代码编写区域了啊,比方说我们在这个地方写一个 print aloe word, 哎,那这样的话我们就写好了一个,呃, python 的代码,这个时候如果我们想运行的话呢,我们就点击运行文件是可以的,是吧?这个运行文件可以运行整个区域所有的文件,也可以点击运行当前行,我们把光标放在这一行, 我们点击运行单元行或者是 nf 九都可以啊。点了之后呢,我们看看右下方啊,他叫控制台,我们有时候也管他叫终端什么的都可以啊,这里其实就运行了一个交互式的拍摄 解释器,那这个时候我们看刚才这个代码就被放在这个地方,然后并且打印出了我们的结果, hello word, 那如果我们把这个代码直接粘到这去运行也可以,是吧?我们改一下,叫你好 回车,答应了你,好。所以这个地方这是 python 解释器的其中一种使用方式,叫交互式的一种编程方式啊,直接在这输, 直接下面直接出结果。总而言之,这里就运行了一个拍摄解释器,我们的程序运行结果呢,就是在这个地方去看啊,当然刚才我们直接执行这个运行文件 也可以。第一次执行运行文件的时候啊,这个地方会有一些对你这个文件的一些运行的配置,我们先不用管它,我们就直接点运行就可以了。那运行文件 件的话,这里运行的命令就不一样了啊,就是运行整个文件,但是结果是一样的,因为文件里面的代码的功能跟只运行这一行代码是完全一样的,所以说这里又是打印了 holower 的啊。控制台区域,我们看下方,这里有个历史,我们之前执行过哪些代码,在历史里都可以看。 在控制台这个区域的右侧这里点击一下,这里有很多功能,其中有一个非常重要的功能叫重启 ipad 内核,比如说当你的程序,比方说运行了一个死循环,或者这里卡住的时候, 长时间不动的时候啊,我们这里点击重启 ipython 内核就可以了,应该说这个 ipython 是 python 解释器的一个高阶版本啊,那这里不是我们的重点,我们就这么一说,大家知道是个什么东西就可以了啊。重启这个内核,这个功能是比较常用的,在这块区域, 那讲完这之后呢,我们再往上看这个区域,这个区域呢有四个选项,第一个叫帮助,那这里有一些教程什么的啊,可以在这里去查看,这里中文写的很清楚,大家自己探索一下。第二个叫变量浏览器,这个非常的重要啊, 比方说我们现在再写一个代码叫 a 等于一,比方说啊,然后我们按 f 九, 哎,这个时候我们执行了 a 等于一这个这一句代码,这时候在右侧的变量浏览器里面,我们就可以看到 变量名叫 a, 类型 int, 大小一直是一,是吧,那这里就非常方便,就说我们程序运行过程中的一些各种各样的变量,在这里可以直观的看到,是吧?也非常方便 啊。再往下看这个绘图,而我们如果是程序运行过程中产生一些图表的话,在这里可以看到最后一个文件,这里的文件,这些文件啊,他是哪里的文件呢?往上看,这个地方是这个目录下的所有文件, 那这个目录也非常的重要,这个概念非常重要,叫 work directory, 就是叫工作目录啊。 这个目录之所以重要,是因为我们程序运行过程中经常要提到一个概念叫相对路径,比方说我们要加载一个数据,我们是通过相对路径来指定啊这个数据的地址的,那相对路径相对于谁呢?就是相对于他 啊,所以有的时候你要是找不到数据,找不到什么的话,大家要注意基于这个路径的相对路径是不是你那个数据的真正的路径 镜,是吧?那这个地方我们可以调整往右这个点击它,是吧?我们这里可以指定指定我们的 work directory 就是我们的工作目录啊,那 spire 的基本使用方式大概就这些啊? 呃,今天我们的视频基本上就到这了,下期视频呢,我们讲一下 jubiter notebook 的使用方式,那我们下期再见。

同学们好,我是陈阳。这节课呢,我们来讲一下潘大师的数据读取,那么他的核心呢,就有三个读取函数,一个是 red tiber, 而 red csv 和 red cl, 那么这三个函数呢,就包含了我们生活中常见的数据分析,呃,读取的文件类型。 首先呢我们先导入两个常用的含水包,一个是能派,一个是潘大师,嗯,导入运行一下。然后呢我们 我们首先来看瑞德胎宝,瑞德胎宝这个呢就是他读取的是一个普通的一个分隔数分隔数据,他既可以读取 tst 文件,也可以读取 csv 文件。 我 tst 文件呢,就是比如说我们打开的一个 tst 文件,这个就是一个 tst 文件里面存储存的储存的一个数据啊,他呢 就是用逗号分割的一个就是一个数据存储形式,一个逗号分割的,那么 csv 文件呢? csv 文件就是我们就是来看一下这一行,就是我读取 csv 文件的时候就用的用的是瑞的 csv, 我这 csv csv 格式文件呢是是指呢以纯文本形式存储的表格数据,所以说呢, csv 是一个也是一个表格数据, 他呢是是以纯文本形式存储的。那如果,如果,呃使用的 csv 存储的文件呢?我们通常是用来存储就是大型的一些数据文件, 那么如果是大型的数据文件呢,就是意味着我们不能简单的就使用一个三要表格呢工具对对他进行处理啊,一个三要表格处理数据量呢是十分有限的, 嗯,我记得好像就是二零一六版的,一个 cl 好像只能处理一百多万条的表格,二零一三版的好像就只是几十万条,那所以说呢,他的限制是非常大的,而 我们就是使用如果使用拍摄下面的潘大石来处理数据量的话,数据的话呢,他这个就会非常方,呃,就会非常方便, 呃,因为我们拍呃拍大,嗯,拍摄下面的拍大师呢,他可以处理就是非常大的数据量,比如说呢,他可以成处理成千上百万的那种,比如说呢,他可以处理只要是我们就是 啊,使用使用分配好内存的内存的话,他他就可以出去就是上一条也可以。 那么回来就是我们来讲重新讲一下开宝这个函数啊,开放这个读取函数 啊,同样就是调用潘纳斯下面的胎宝这个函数,里面的传入参数呢,大致的有,他其实有很多,但是我们常用的也就几个,比如说呢,我第一个参数呢就读取我们就是文件所在的路径, 那我们这里就是以读取一个 tst 文件就是为例,文件所在的路径呢,就是我们就是 tft 文件所放的路径啊,那要注意呢,呃,如果你的文件放在 c 盘下呢,就属于 c, 如果是 d 盘呢就是 d, 然后他的格式呢是他里每个就是上上级路径和下级路径的分隔呢,就是一个斜杠的一个形式,反斜杠,这是个反斜杠的一个形式,也就是说,呃,一定不能用斜杠,如果用斜杠的话,他是会爆错的,如果读许的话,一定要是反斜杠才能,就是 读取他也不会报错。那如果我想用斜杠的话呢,他比如说呢,我想把这个改成斜杠,我们因为我们就是普通路径读取的时候,他这个直接复制路径的话,他会直接是一个斜杠,比如说如果改成斜杠的话,如果改 斜杠,那么我们也可以有办法处理他,也就是说呃,我们可以把前在前面加一个二,这个小二呢就说明他就是呃,他可以就是成功的读取这个路径下的一个文件。小二的作用呢就是呃,就是使这个斜杠呢能够轻呃,能够分级,能够就是 处理就是上级和下级的关系,就是他可以就是正确的表达路径。我这个这条语句呢,不是这个语句呢,就等同于我们就是直接用 反斜杠,就是等同于我们刚才那个小语句。同样的第二个参数呢,就是 spp 啊,这个呢就是我们读取是以什么格式来读取的,我们如果是逗号的话,我们就是以逗号分割的读取。 说呢,我们刚才这个啊就是这个文件,我们读取的就是要要读取的这个文件,那么这个文件呢就是用逗号分割的,所以说呢,我们就是读取的是指定是逗号分割的文件。 我们憨的憨的这个参数呢,这个参数呢就用作指令,就是列名的一个序号,默认是零,也就是第一行,也就是第一行啊,第一行就是我们这一行,第一行他就是默认是一个列名, 把它作为 dw 的一个念名字,念名,同样的就是这个参数呢,就指定的是,所以啊,这个参数他指定, 所以,但如果是 boss 的话,他就是默认缩影,默认就是由零到 n 的一个数值缩影,那么如果指定为零的话呢?如果给他指定为零,他就代表是,呃,默认把这个第一行作为就是缩影,比如说作为把这个 vi 作为一个缩影, v i 一字对应的第一行作为缩影,那我们先就是把它读取默认的来看一下,然后我们读取之后运行,我们可以看到这个就是我们读取读取进来之后,让普伦特把这个大家谱认出来, 这个就是我们读取的文件,我们可以对比看一下,他就是把这个逗号分割的数据文件呢,分别就是做成一个列的一个形式。呃,很好,这也是很好理解,那如果我们把它就是把它设置为零呢?他会怎么样呢? 比如说他设置为零呢,他就会读取把第一个,把第一列呢作为就是缩影,比如说我们可以看到呢,他这个 v i 一的这一列呢会变成一个缩影, 那我们可以看到他这个会变成第一,第一列的会变成就是这个带大佛影的一个锁影。同样的就是如果把这个憨字改成一的话,就是我们把第二行作为就是列名, 我们可以看到他直接是第二行作为列名了,他把第一行直接默认去掉了,我们他就相当于从这开始直接看着这个就是第一行,他作为一个列名,二三二三四列作为就是这个新的第二行的一个列名。 呃,这个轮胎轮胎棒呢,就是用于读取简单的数据说贴个 t txt 和小型的 csv 文件啊。接下来呢我们就来具体 讲一下 csv 文件的读取, csv 文件呢,他是一个,就是在我在数据分析里面呢非常常见的一个数据存储形式,他是以纯文本的形式存储的,那这就是我们处理起来非常方便,因为他存储的内存空间不大,而且他读取的速度也非常快。 那首先呢,我们来读取一下,我们把这个路径指定一下,指定一下路径,把这个直接复制过来,直接复 置过来,然后可以了,这个就是我们要读取的这个就是我们要读取的一个 csv 文件,大家可以看到这个带差点 csv, 就说他的后缀是 csv 文件,那么他也可以用一个 csv 读取,但是我不推荐 一个 siri 读学,因为他,呃 csv 里面的编码呢?他一个 siri 可能就是编译不出来,他有时候可能会乱码,有时候我们存储的是中文形式的一些文件数据的话,他可能就会乱码,但是我们大部分是不会乱码的。呃, 如果常用就是常见的就是如果要打开 csv 呢?我推荐就是呃使用 tft 文件,就是 tst, 就是笔记本形式的一个数据打开,那这就是我们要读取的一个数据文件,他可以他是有,这是有呃,酒行的一个酒啊,酒店的一个数据, 九类的一个数据还是比较大的。然后我们直接读取进来,这个参数呢,就是呃,通常是使用默认的参数,因为他这个默认的参数就已经是呃把行和列都是分好的。 还有一个重要的参数,就是我们读取的时候可能会出错的一个参数,就是这个读取引擎,这个参数啊,这个参数呢就是呃,他是选择就是谁谁谁,拍摄还是不是谁,语言就是还是拍摄语言,就是来读取引擎, 但是呢,呃,如果用 c 语言来读取引擎的话,他是非常快的,但是他也可能就会出现一些编译上的问题啊。我推荐的是使用拍摄,这个就是读取引擎的还有一个参数呢,就是我没写,因为我们读取的是不需要,就是那啥我们可以读取一下, 呃,还有一个三口刚才说的就是很抠定,很抠定,就是指定的字不算类型,那通常也就也就是我们我刚才说的一个编码的问题啊,通常呢就是 ut f ut f 杠八,那 utf 杠八呢?就是读取的就是包含中文文件,就比如窝里数据里面有汉 字或者一些中文的一些语句的话,他会他呃使用 utf 杠八呢,他不会出现一些乱码的一个形式啊,通常就是默认也。我们使用的就是 utf 杠八啊,如果,如果我们就是在读取的时候,他可能会出现另外一些错误,呃,比如说呢一些 文件配置的一个问题,他会导致也也会导致一个乱码,那这个时候呢,我们可以把他呃把 utf 杠八呢就默认给他指定为 gpk。 这个 gpk 呢也是一个比较常用的一个编码,一个一个编码,呃,一个编码类型。 gpk 呢就是包含的更广,更一个广泛的一个,呃,更广泛的一个编码,也就是说他包含的范围呢,在 utf 杠八里面也包含了啊,不是 utf 杠八里面包含的呢,呃, gpk 里面也包含了,就是 他是非常广泛的。然后呢我这里呢我们就可以直接看到读取的文件是这个样,这个样子啊,然后我们这里调用的是一个憨的,憨的这个函数他多,他默认是显示,就是前五行的一个数据,这里就是我们读取的一个数据, 那最后一个呢?就是瑞的塞奥,瑞的一个塞奥呢,就是很好理解的,就是读取一个塞尔文件嘛,有塞尔文件,他后缀就是 xlxxx, 那同样就是这个文件,我看你在这里, 今天我们就读取这个文件 excel 文件,他摸他后退,就是一个赛道的一个格式,然后呢就是我们指定好路径之后,他这个和之前的维德胎宝这个,呃,这个,这个参数还是有点相似的,比如说憨蛋和这个指定锁引 都是默认为联合,默认为 boss, 也就是直接就是用数字所引来读取,我可以直接运行一下,这里可以看到他直接就是读取进来的,那这里呢就是憨的,就是指定的是列名,刚才跟我们讲的是一样的, 那我们总结来看呢,就是这三个,这三个读取函数呢,如果用速度来讲的话呢,就是这个 csv 是最快的一个速度,他读取的文件文件,那个文件内存的也可以,就是更小, 他一个塞尔的,一个塞尔的读取的时间是最慢的,因为他通过,他还要就是通过编码来转化为,就是转化为计算机读取的一个内存,也就说他占的内存也很大,就是时间也很慢啊,这节课呢,我们就讲到这里,我们下节课再见。

大家好,那么这节课啊,咱们就来讲一讲关于模型的保存还有读取,嗯,这个东西啊,还是蛮重要的, 就是说啊,当咱们在进行一个网络的训练时候啊,咱们最终想要的目的是什么?咱们最终想要干的是不是说要把这些最好的权重参数还有编制参数啊,给他保存下来啊,也就是说咱们需要得到这个最好的 w 还有 b。 那么大家想一想,咱们之前啊,也是讲过这个转机神经网络吧,咱们也可以进行训练,也可以进行测试,但是呢,咱们没有进行这个模型保存这个操作吧,也就是说啊,咱们当咱们训练的时候,那些 w 和 b 保存来的啊,保存在咱们当前这个程序里的内存里吧, 但是呢,大家想一想,我光保存到内存里啊,好像来说我现在把这个 id 啊,或者说把咱们的编辑环境给它关掉了,下次我再想给它打开, 在讲测试的时候是不是就没有这个模型了?那么咱们今天要讲到这个保存模型啊,是说把咱们的这些权重参数还有编制参数以及呢咱们整个的计算图,或者说整个 section 当中里边所涉及到的每一个参数,咱们都给他固化到咱们的磁盘上。 那么下面呢,咱们啊就先来看这样一个非常简单的小例子,谢谢大家。用一个小例子来说一说咱们该怎么样?呃,用 twenty flow 啊,帮咱们保存一个模型, 那么首先啊,大家看,嗯,这里啊,我定义了两遍量,一个是 v 一,一个是 v 二啊,他们都是一个随机的定义,用 tensor flower random note 啊,咱们进行一个呃高斯的随机处理化,然后呢它是有这样一个大小的, 这个一二啊和二三分别表示着这个 v 一啊,它是一个一行两列的矩阵,然后呢 v 二 它是一个两行三列的矩阵。然后啊,咱们还是按照咱们之前那样一种做法啊,先把咱们的变量进行一个全局数字化,数字化完之后啊,咱们要定义这样一个筛审欲吧,但是呢,这里多了一个东西啊,大家注意这点,就是说咱们掉了一个吞丝辅料点的寸模块下,寸模块下呢,有这样一个 siver 类, 咱们把这个 cover 类啊给他拿出来初始化这样一个 cover 类的对象。小的 cover 一会呢,咱们就要用这个小的 cover 帮咱们把这个 v 一和 vr 保存进来, 咱们看啊,就是说,嗯,咱们首先啊,还是在三神里边进行一次初始化实际的操作。初始化完之后呢,咱们这里啊先打印了一下这个 v 一 v 二, 为了便于啊,咱们一会对比一下,因为这里啊咱们是一个随机的数字化吧,嗯,打印完了之后啊,咱们主要的就是这行代码啊,咱们用这个小 c 窝,我们看进小 c 窝点 c 五, 我们是把怎么存下来了,咱们是把这个 session 的计算率给他存下来了吧,也就是说呢,咱们当前这个 session 里边涉及到的一切的参数,咱们都可以给他保存下来, 然后后面就是说第一个参数是咱们要保存的东西,第二参数呢,就是要保存到的一个位置啊,这个位置呢,就是说以咱们当前啊这个代码所在的位置啊,为咱们的根部落,我们可以看一下,这里给大家打开了, 这个是咱们当前代码时的一个根末路,然后呢保存到当前末路里边的 save 里面,咱们来看 save 里边本来啊,这个 nice, 咱们先别管 本来啊,它里边是个空的吧,一会咱们来执行下代码,咱们来看一看,就是说啊,它的 flow 啊,是不是真正的把咱们的这个两个变量固化到咱们这个瓷板上来,哎,咱们先来运行一下,呃,我们一看啊,现在已经打印出来了,咱们这个 model 啊,已经 save 的 in fail 了,哎,就 保存到这个文件夹下了,咱们再来看刚才是一个空的吧,那么现在呢,咱们是把它保存的一个什么名字啊? model 点 c k c k p t 吧,一般情况下,咱们用这个点 c k p t 当咱们一个保存的文件, 嗯,就是说啊,咱们现在确实的是把这个 vvr, 不是说 vvr 把这个 session 给他保存下来了吧,那么一会咱们就来看一下,咱们能不能够通过啊 test flow 给咱们提供的一种读取的方式,把这个 vvvr 给他读取出来呢。 嗯,这里啊,大家先记住这两个值啊,一会咱们再看一下啊, vvr 现在是这样两个值,一会呢咱们就读取出来看一看这个 vvr 的值啊,发没发生一些变化。 那么首先呢,就是说啊,为了防止一些作弊嫌疑啊,我先把这个咱们的这个啊,中途啊给他重启一下啊,我给他 restar 一下, restar 完之后啊,相当于什么?相当于咱们这个, 嗯,这一部分代码相当于是没有执行过的,咱们直接去执行下面这部分代码啊,在下面这部分代码里啊,咱们来看, 其实呢,还是掉了这样一个 sever 啊,这个 sever 呢?还是等于这个 ten several 啊,这个春模块下的这个 sever 类, 然后呢,这个 v 一 v 二还是进行一个随机处置化,大家接下来就要看这个 v 一和 v 二咱们拿出来的值,哎,是进行一个随机处置化值,还是跟咱们之前啊保存的值是一样的呢?那下面咱们就来运行一下, 嗯,运行之前咱们再说一句,就是说咱们怎么样读取模型啊?读取模型是用 c word 点 restart 啊,咱们之前是用什么?咱们之前啊是用这个 c word 点 c 五八,这是咱们保存模型,咱们读取模型呢,咱们就用这个 c word 点 restor restor 意思啊,就是说把咱们固化到磁盘里的这个塞水啊,再给它读取出来, 还是啊到咱们刚才保存的路径下,再去把咱们这个 size 啊给读取出来。那么下面啊,咱们就来运行一下 我们,你看现在运行出来一个结果吧,咱们来对比一下,现在的 v 一是负的零点六一九,负的零点六一九,零点一零七,也就是说呢,咱们这个 v 一和 v 二是一模一样的吧,虽然说啊,咱们都是一个随机的数值化,但是呢,咱们读出来的这个 v 一和 v 二跟咱们之前保存的模型的 v 一和 v 二是一模一样的吧, 那么就是说咱们 test flow 啊,确实帮助咱们完成了一次模型的保存,还有读取的操作。那么现在呢,只是啊举了一个非常简单的小例子啊,跟大家说了一下 咱们怎么样用 tensive flow 给咱们提供好的这样一个方式去保存和读取模型。那么下面呢,咱们再来看一下一个稍微复杂的例子,嗯,咱们之前啊讲过了这 个 cnn 吧,就是说一个卷机神经网络,咱们在讲卷机神经网络的时候啊,咱们是不是没有去保存咱们这个卷机层里边的每一层的参数啊?那么下面咱们就要来稍微的改一改咱们之前啊写过的那个卷机神经网络的代码了, 嗯,咱们来看一下,我来看一下在哪修改啊?其实啊上面哎就是说咱们卷机的定义啊,以及每一个层位结构啊,这些咱们都没有发生变化,跟咱们之前讲的那个 c n n 啊是一模一样的。 直播说呢,在这里啊,我加上了一些额外的操作啊,大家来看这块呢,就是说方阵之上啊,还是跟咱们之前是一模一样的。直播说,在这里啊,我定义了额外的一些东西, 我首先呢定义了一个 save step 啊,这个 save step 的意思啊,就是说当咱们卷机神经网络在进行迭代时候,咱们可以进行一个选择,就是说咱们是不是每一个 pro 一个 epoch 进行训练啊,你可以选择哎,我是隔五个 epoch 已保存呢,还是隔一个 epoch 已保存呢?咱们保存的一个间隔,这个是咱们大家可以自己手动设定的 这个 save step 等于一的意思啊,就是说一会呢,我要进行一个 epo 值,一个 epo 值进行咱们当前筛审,里边权重参数还有编制参数,就是说所有的层涉及到的所有的参数咱们都给他保存下来, 那么咱们还是啊调了一个 tensive flow 点儿春模块儿啊,春模块儿还是像之前一样,把它的这个 several 类拿出来实地画这样一个对象直播说呢,这里啊,我爹我写了额外的一个参数, 这个 max to keep 等于三是什么意思呢?一会大家在咱们实际的运行时候,哎,会大家看这个 max max to keep 等于三,到底啊,做了一件什么事?这是咱们在这块先定义了啊,两个东西, 那么这块呢,还有一个啊,略微的不同,就是说咱们之前啊是不是只进行了一个卷机神经网络的训练?咱们在测试的时候也是啊,就是说咱们训练完了直接进行测试啊,拿咱们的模型啊保存到内存当中。那么这回呢,咱们定义了额外的一个东西, 看这里啊,就是说我定义了一个度寸等于零,这个是什么意思呢?嗯,就是说当咱们在训,我先改成一吧,在咱们训练的时候啊,咱们让,哎咱们来看这啊,就是说这个度寸是什么意思呢?这块我们看有一个 f 度寸等于等于一, 也就是说如果我把这个杜春设置成一了,就是说咱们接下来是要训练一个卷机神经网络,在这里呢,咱们就要不断的进行训练,训练啊,咱们之前这一部分跟咱们之前是一模一样的啊,只不过说我加上了一个保存的东西,我们看咱们保存什么,咱们加了一个 一炮制这个再除上这个 cout 吧。如果说啊,他这个是啊等于等于零,就是说可以整除的情况下,咱们就要进行一个保存,那么现在来说就是说每一个一炮制,每一个一炮制都要进行一个模模型的保存,模型的保存呢,咱们还是用这个 cour 加 c 五,咱们保存的还是这个三审的计算率, 咱们把它保存到这个当前的一个根部路下面的 c 五,我们看啊,这个 c 五里边儿, c 五里边儿嘛,这是 c 五, c 五里边儿有一个 nice, 现在我把之前我做的给他删掉,那么现在啊,他是一个空的,一会儿呢,大家在保存的时候就能看到咱们实际的是往这里啊存进,存进去一些值了, 这里存值啊,咱们需要给每一个 epoch 啊,进行一个啊,就是说咱们要咱们要每一个 epoch 一个 epoch 进行保存嘛,所以说啊,每一个 epoch 的名字啊都是不一样的,咱们在这里呢给让每一个 e epoch 名字啊都是不一样的,咱们在后面加上了一个杠几啊,比如说杠零,杠一杠二,咱们代表每一个 epoch 的模型啊的一个名字,他是叫什么的。 那么这个是咱们一个度寸等于一的情况下啊,咱们就要进行一个网络的训练,以及呢模型的选择啊,模型的保存, 然后呢如果说啊,咱们把这个度寸设成零,设成零之后啊,他是不是就不走咱们这个训练的训练的这个模块了,他直接就要走这样一个测试的模块吧? 在走测试的模块下,咱们是不是说咱们进行测试的时候,咱们要进行一个模型参数的读读取了,咱们要把之前啊那个卷基层啊,还有全连接层啊,所有的层的 w b 啊都读进来,以及呢 咱们的一些啊,这些中间的这些东西啊都给他读进来,因为啊这些东西都是咱们腮神里边定义的吧,所以说呢,咱在这里啊,就是说 用了一个 server 点 restart, 哎,把这个 section 啊再读进来,读进来意思啊,就是说把之前的模型里面所涉及到的所有的东西都加载进来,加载进来之后啊,咱们是不是就可以进行一个啊这个 test 了,我们看这块进行了一个 settle run, 拿哪个赛事进行 run, 拿咱们之前保存下来的那个赛事进行了一个 run 操作吧,也就是说啊,咱们拿咱们之前加载好的这样一个模型哎去做了咱们一个测试的工作,那么下面呢,咱们就来运行一下,看一看咱们的,嗯,这个代码会 好,不是说咱们代码看一看咱们保存模型的时候的一个效果啊,我们我们直接 restar 一下吧,直接 restar 一下,从头开始运行一下,咱们来从头开始跑一下,还是啊先把咱们的这个所需要的这些包啊都导进来,然后呢把 minis 的加载进来, 指定好啊咱们模型的一些参数,然后定义好咱们计算的一个框架,然后这块就是咱们定义一些超参数这块,咱们先让这个度寸等于一,注意啊,就是说度寸等于一的时候,咱们是进行一个模型的保存还有训练吧,咱们来看一下,在这里呢,咱们就要进行一个模型的保存还有训练了, 大家看就是说现在这个 nice 里边是一个空的吧,咱们来运行一下,看一看,运行可能稍微有些慢啊,大家,可以啊,还行,不是很慢。 咱们来看,现在是一个 epoch, 一个 epoch 进行了吧,现在是第零个,第一个,然后呢?这个 cos 的时代不断下降的吧,就是说咱们模型啊,确实起到了一个效果。咱们再来看 现在这里边有这样杠零,什么杠零是第零次吧,杠一第一次哎,杠二是第二次哎,大家翻翻一点,就是说我杠四出来之后啊,杠一就没了,然后呢?杠, 杠五出来之后杠二就没了,这是为什么呢?这块是因为咱们之前定义了这样一个东西,咱们定义了一个 max to keep 等于三吧,这个 max to keep 等于三啊,就是说咱们最终啊只要只保留这样三组模型,大家看就是说现在是六七八吧, 等九出来的时候六就没了啊,也就是说咱们只保留啊,最后那三组模型,咱们要拿最后那三组模型出来, 哎,为什么说咱们只保留三种模型啊?哎,咱能不能多保留一些模型啊?咱们来看一下,我随便打开一个,咱们来看一下他的大小啊,他是多大 一个来说啊,咱们现在一个非常简单的结构啊,他就已经是七十多兆了,如果说你的模型啊,再稍微复杂一些,很有可能他达到六七百兆,这都是有可能的,也就是说呢,咱们不希望啊,咱们保存下来的模型啊太多,那么这个东西啊,都是可以大家 手动设置的,你也可以设置一个 max to keep 等于十啊,或者是等于多少啊?如果说 max to keep 等于乱,就是说啊,咱们要把所有的模型啊都保存下来,这个东西啊都是咱们可以手动进行设置的, 现在应该已经是迭代完了,咱们看啊,现在迭代的一个,嗯,咱们可以看一个寸的 x c 啊,咱们已经达到了一点零啊,可能是这个不是太准,可能啊发生了一些过敏壳的现象,一会呢咱们啊就要拿这个,嗯,这个度让度寸啊等于零的时候,咱们要把这个模型拿进来,咱们再来测试一下。 那么现在啊,咱们是不是已经把这个模型啊都给他保存下来了,咱们来看最后一个模型是十四个吧,因为咱们这个 epox 是从零开始的,所以说这块当咱们再进行一个测试的时候,我就把这个杜春啊给他改成零,改成零之后啊,咱们就可以来运行这块了啊,就是说咱们可以进行 一个测试了,咱们再来运行一下。这块呢,我拿到的是哪个?咱们寸一炮尺是等于十五的吧,所以说我现在拿到的是第十四个一炮尺,也就是说这里最后一次迭代的结果,咱们拿最后一次迭代结果来去跑一下咱们的测试级,看一看咱们现在一个测试的效果会是怎么样,咱们来运行运行一下。 哎呀,这题怎么没运行呢?呃,我看一下刚才这块是没改吧, if 读 trin 等于零,我看一下 if 读 trin 等于等于零,哎,为什么没有运行呢 啊?这块啊,这块我还没有改,刚才啊就是说这点注意点,如果说大家拿这个 notebook 进行,呃,就是说拿 notebook 进行代码书写的时候,当咱们完成了一个块的时候啊,咱们需要先给他运行一下,给他运行一下之后啊,咱们才能再运行下面这个区域,好, 那么他变成一个星号啊,就代表着他现在正在运行了,咱们一会啊就可以看一下他的一个运行的结果。那么这里啊为什么给大家说这个呃度寸这个事呢?也是推荐大家按照我这种写法,就是说咱们其实啊咱们测试,咱们 test 还有寸的时候, 是不是说都要利用上咱们之前写好的这个网络的模型啊,为了避免咱们重复的去书写这些东西啊,就是说咱们可以设置这样一个变量,等于零或者等于一来控制着咱们到底是训练还是测试啊,这样做起来是相对来说是比较方便的。 那么一会啊,他可能应该啊,我们看这是已经是给我跑满了,这个速度啊,可能稍微比较慢,我现在搭的这个 tender flow, 他也是一个 cpu 的版本,因为啊用这个笔记本来说啊,他这个性能啊还是比较低的,那么可以看啊,现在的一个探测结果是零点八八六吧,哎,也就是说咱们现在 带的这个效果还是可以的啊,就是说咱们确实啊是从咱们这个啊,咱们这个磁盘上把咱们的模型呢加载进来了,加载完模型之后啊,咱们又对咱们的模型啊进行了一个太子的操作, 那么这样咱们就完成了一次完整的卷机神经网络的训练,包括了咱们模型的这个呃固定到磁盘底以及呢,还有咱们从这个磁盘底啊把咱们模型再读取进来,再进行一个测试。那么关于啊这个模型的这个读取还有保存,那么就先给大家讲到这里了。

教你保存所爬唐诗,并得出运行时间上代码。我们已经爬取完了唐诗三百首。然后我们定义了一个 ceodeter 函数进行保存。保存的时候呢,我们保存为杰森格式。好,接下来我们来运行一下,看一下他的运行时间,记住一下开始时间,再来记录一下结束时间。 最后输出一下程序的运行时间。开始运行,我们看一下,总共耗时二十八点九秒才将程序执行完毕。然后看一下结果。 这里有一个唐诗文件夹,下面就有三百首唐诗,我们打开手看一下。这就是他的存储的数据格式。小伙伴们,你学会了吗?

呃,今天做了一个东西,这个东西的来源是什么呢?因为, 呃,我不是开了一个茶叶的淘宝店吗?然后之前我看人家有发那个,就是可以,呃,就是可以搜到全国所有的商家,然后 把他们的销量,然后还有那个产品的信息,还有价格这个东西,然后全部收集到放一个一个笑里面,然后他们进行分析,好像叫什么 什么一个软件吧,叫生意参谋还是什么的,要花钱买的,当然对于我这种特别穷的人来说肯定是不会花钱的,所以我就想着,嗯,这个功能我自自己能不能做一个。 然后今天我就研究了一下,就是淘宝上面爬虫的一些东西,我现在,呃目前这个这个程序,呃,就是我只能爬虫 一页就相当于什么呢?打开看一下一个浏览器吧,就比如说浏览器,然后点开这个,这个淘宝吗?我们搜一下这个淘宝网, 嗯,就是就比如说我要说个茶叶,对吧?就是 茶叶,我们转转转,这不就是一页吗?往下翻是一页吗?这是第二页,第三、第四、第五,我现在这个程序就是只能实现一页,后期功能我会加,就是把第二、第三、第四、第五,然后一直到最后一页所有 的,呃,页面上这些信息都爬下来,我能爬哪些东西?我现在我要的是这个,就是这个什么预售,二零二一这个,然后还有这个价格,还有这个名字,店的名字是这这三个东西我要爬下来,然后进行数据分析, 然后先看一下程序吧,程序是这个,然后我预习一下,我这里面是没有,就是因为我,呃,我做完了之后我要保存到一个一个笑里面,一个笑的名字叫淘宝点啊。 xlsx, 我现在这里面是没有的啊。 嗯,是没有的,然后他会自动生成一个 ex, 就是一个赛文件放到这个同级目录下面,这个目录是可以调的,我可以把这里面目录加上去,为了 方便我就没加了,就到时他会生生存在这里面,就是这一块,这一块里面就这一块里面,现在这里面是没有的。然后我现在来运行一下吧, 他程序在开始运行。因为淘宝有一个反爬虫机制吗?所以我在每一步操作的时候我都加了一个休眠时间,因为我怕那个系统操作太快了呀, 到时候就把我程序给卡掉了,就不让我执行了,所以我就休眠了。然后现在茶叶已经就是他,他已经自动搜索茶叶出来了,这都是系统在操作,不是我操作的,然后已经结束了,然后看他有没有生成一个淘宝,你看淘宝点 xl sx 的一个文件,我们点开看一下,看标题,价格,月销量,店铺名字,标题就是我刚刚说我要爬的那个,呃,那个信息,然后价格, 然后月销量,然后店铺的名字这些东西,然后什么后续?淘宝老手们就是通过什么价格呀,然后月销量这个东西,什么什么后期分析一下,然后得出一个什么什么东西的,这个我还不太会。 呃,反正我现在就能实现这个功能,到后期淘宝上怎么用,我到时候再研究一下,我可以他一夜能爬出六十一条。等等到明天吧,明天如果有时间的话, 把后面所有的条都扒下来,放到一个一个饲料里面,嘿嘿,就这样。然后简单说一下, 呃,我的程序吧,就是我首先创建了一个类叫淘宝的类,然后呢就是这有个幺二幺,就是我把这个淘宝的这个幺二幺放进去, 其实他可以实现自动登录的啊。但是淘宝有一个自动登录,就是他会出现一个验证码,就比如说我的淘宝,然后我点这个,哎, 他登上就他这个会有个拖动这个这个这个,到时候他点了有验证码让我刷一下这个东西,这东西好像还挺复杂的,这个问题我还没有解决掉,所以我现在就是默认从淘宝首页爬,就不登录我的系统爬了。 然后这个这个函数定义的就是就是这个,就是这个就他自动会找这个淘宝首页,淘宝网的这个这个这一页他会自动的找这一页,然后打出茶叶两个字,他会打出这两个字就这个函数的功能,然后这个函数就是我要获得商品, 就是,嗯,就是就是这个里面我要获得这个这里面的这个标签,看这里面我要获取这个立标签,因为我看了一下,你看这个检查元素里面吗?哎,不是用火狐吧?火狐我习惯性用这个软件了, 用火狐软件,然后点一下这个淘宝网,然后就 比如说茶叶这个是系统自动实现的,我这把是我自己操作的。然后就是我要爬这个吗?然后我这个函数,我这个函数定义的这个 get, 这个函数就是要,就是要排除这个每一个商品信息, 然后我是在这里面找的就是这个什么标签 div 啊?然后那个就是这个爬这个,然后还有爬这个 这些操作,然后我就在这个函数里面实现的实现的,然后这个函数就是我保存到一个一个。 sir, 这个函数就是我把爬下来的东西保存到一个一个四样里面。嗯,然后这个就是运行好了函数就结束了,拜拜。