GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing mofanpy.com — 文件批量处理 | 莫烦Python 文件批量处理 作者: 莫烦 编辑: 莫烦 发布于: 2021-06-02 我很常会批量处理一些文件,比如在 莫烦 Python 这个网站从 morvanzhou.github.io 迁移到 这里的时候, 我要重构所有的底层架构,从一个静态网页做成动态网页。其中有一个重要步骤就是批量处理所有的文件, 将指向 morvanzhou.github.io 的文本全部改成 mofanpy.com。 这节内容,我们就以这个为例,复现一下当时我处的困境,看我怎么用 Python 帮我自动化解决这个困境。 这一节主要涉及到的功能:
我遇到的问题¶具体来说,这个问题就是要将所有 莫烦 Python 的教学内容,批量将里面提到的 morvanzhou.github.io 改成 mofanpy.com。 如果你不会 Python,或者其他的语言,那你就只能手动,一个个打开这些文件,然后编辑替换所有有问题的文本。 偶尔一两个文件这么处理还好,但是当时我的教程有 3-400 个,处理两天都处理不过来啊。 所以我只能求救我的 Python,让它帮我做这件事。 初步思考¶首先需要简化问题,简化出来的话,其实就是要有三个步骤。
好,明白了这三步,我们就来分别用 python 和之前教学中的内容,解决这个问题吧。我在下面设计具体知识内容的时候,会引用到以前的教学,你可以当做回顾。 你就当做你在解决问题的时候,去搜索引擎上做的那些搜索行为就好了。 找到所有文件¶怎么用 python 找到某个目录下的所有文件呢?其实我们在 os教学 中就已经提到过, 而且我们还能用 os 库做很多额外的处理。还不了解 os 的同学去这个链接 看看吧。 运行上面的代码,你可以看出,我们在 找到文件特定字段¶能看到文件名还不够,因为我们不知道每个文件中是什么内容,所以我们先写一个读取文件内容的功能,然后分别打开看看里面写了些什么,分析一下要怎么处理后面的步骤。 这里,我们就需要用到一个 for 循环来遍历所有的文件,并依次展示了。如果你还想回顾一下 for 循环的教程,请看到这里。 另外,我们还需要会使用 open 函数来打开文件,不然你都没打开,怎么知道里面有什么呢?读写文件的使用请看到这个教程。 很好,现在是能把所有的文件都读出来显示了,我们看到不同文件中有不同的文本,那么我们怎么定位到特定的网址文本呢? 这时,之前提到正则表达式的教程就能来拯救你了。 正则是一个非常有用,而且非常常用的技术。帮你找到混乱文本当中符合特定模式的文本。比如我要在一大串文本中找到一个网址。 牛逼,在这么复杂的情况下,这么多干扰项的情况下,mofanpy.com 这个字段都被你找到了。那我们就再进行下一步, 怎么将这个找到的文字替换掉。 替换¶上面我们在演示正则的时候是指一个匹配的演示,现在我们要正式进入最惊心动魄的时刻了,项目的成功与否,都看这一步的处理了。 上面我们已经可以找到并读出所有的文件内容了,现在我们有两个方案,你看看你会选择哪个?
其实最终怎么做,取决于你的这个文件处理系统需要怎么做。其实两种做法都是可以的,但是在你测试和验证程序的阶段,我建议你还是将改动过的文件,写入一个新的文件中, 不然原文件被覆盖了,你就改不回来了。 运行完上面的代码后,我们再从新文件中读出来看看内容有没有改好,验证一下。 这就完美了,我们不仅找到了要修改的,而且还修改了需要被修改的,并保存到了另一个地方,为后续操作留下空间。 这次的任务就圆满完成了。 总结¶虽然这个任务十分简单,但是也蕴含着一些对项目的思考,包括如何定位问题,分析问题,并拆解问题,解决问题。 有了上一个 好嘞,到目前这个阶段,你已经可以撒手去完成一些简单的项目了,后续的教学将更加集中在提升能力的方面,也会更加精彩。 交互式学Python
介绍
基础功能
循环、数据、判断
函数、类、模块
文件管理
异常检查和处理 |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |