arcgis批量处理nc文件_法律行业python教程——利用python批量处理文件之批量重命名…

  • Post author:
  • Post category:python


9da8cdca589b6dd34af15911b615742c.png

对法律小伙伴们,尤其是律师助理和做非诉业务的小伙伴们,大量的重复琐碎的文件处理工作是不是常常让人失去工作的兴趣呢?

这里就不得不提到python工具的运用啦,一定要记住编程的思想是什么:

1、制作工具实现自动化工作;

2、拒绝重复工作;

不光对法律行业,所有含有大量文件文档工作内容的朋友们,都应该尝试学习使用python来构建自己的个性化处理工具。接下来废话不多说,我们直接进入主题。

准备工作:

1、老生常谈,再提一下,python3 和Pycharm工具的安装。

2、配置头文件:

#encoding:utf-8
import os

这里第一行#encoding:utf-8可加可不加,但为了培养好习惯,建议大家每次都加上这一行,意思的默认编码为utf-8编码,以免中文处理的时候出现乱码。

第二行import os,导入os库,这个库是python默认安装的库,不需要另外安装,直接导入就行,这个OS库是一个非常常见的python处理文件和目录的库,有了这个轮子,我们可以非常直接的对文件进行自动化处理。

接下来,我们就可以尝试各种文件处理操作了。

对于没有编程基础知识的朋友,需要先补充一下目录与路径的基础知识。如果已了解,可以直接跳过。

  • 目录的定义很简单,简而言之就是文件夹,可再细分为一级目录、二级目录、三级目录。目录的概念没必要深究。只要知道每个计算机系统都有一个根目录,用正斜杠“/”表示。根目录下的文件夹,比如“/root”,就表示根目录下的root文件或文件夹。
  • 路径(PATH)可分为绝对目录和相对目录。一般来讲,路径指的是当前文件所在的位置,这个位置需要包含文件的文件名及其后缀。以win10系统中下图举例:
9371caea166c966028c6eee3d91b2adb.png

首先我们以上图中的图片文件“1.png”(以下简称“图片1”)作为对象,其绝对路径为:“D:娱乐美剧2.png” (“”反斜杠是win系统的表示方式,用正斜杠亦可) 。路径“./2.png”(以下简称“图片2”)就是图片1用来表示图片2位置的相对路径。这里的“./”可以省略,简化为“2.png”。图中文件夹仁医内的文件可以表示为:“仁医/123.jpg”。上一级目录(文件夹)中的相对路径可以用“../”表示相对路径,也可以直接用绝对路径表示,上图中比如下面这个”abc.txt”,可以表示为图片1的相对路径:”../abc.txt”,或者绝对路径“D:/娱乐/abc.txt”。

57d64f44ded540d5381bb67f99fd87bb.png

需要注意的是,相对路径是以某个文件为对标才存在的概念。绝对路径无论什么时候都是可以用来表示位置的。

一、文件的遍历操作

了解了文件的位置概念,我们来看下文件的遍历。什么叫文件的遍历,就好比点人头一样,每个人点一遍名字,点的过程当中,你可以对其进行操作。接下来看一段代码大家就明白了:

    for parent, dirnames, filenames in os.walk('wenshu', followlinks=True):  #dirnames 子文件夹
        print("parent:",parent,"dirnames:",dirnames,"filenames:",filenames)
        for filename in filenames:
            file_path = os.path.join(parent, filename)

上面os.walk是os库中的一个方法,可以遍历一个目录下的所有文件,返回三个值,也就是我们声明的parent, dirnames, filenames三个值,分别代表上级目录,子目录,和文件名称。同时我们再在上面的基础上,对文件名filenames进行遍历,就可以遍历指定文件夹中所有的文件啦(包括子文件)。这里最后得到的值file_path,就是根据你输入的地址,这里是“wenshu”文件夹得到的相对路径。看不懂代码也没关系,照抄过来,在“wenshu”的位置输入你想要代替的文件夹位置,即可遍历该文件夹下所有的文件。

那么遍历文件有什么用呢?太有用了,遍历文件意味着你可以一次性操作所有的文档,包括文件名修改、文件删除、文件转换、文件内容替换、文件信息检索等等。

接下来一一演示给大家看以下:

二、文件名批量修改

一般来说,windows系统下,我建议使用绝对路径,因为文件层级多了,使用相对路径有时候会报一些莫名其妙的错误,对新手不友好。这里我在上面基础上增加了两行代码,通过字符串拼接获取每个文件的绝对路径。

    for parent, dirnames, filenames in os.walk('wenshu', followlinks=True):  #dirnames 子文件夹
        print("parent:",parent,"dirnames:",dirnames,"filenames:",filenames)
        for filename in filenames:
            file_path = os.path.join(parent, filename)
            rootPath="C:坚果云我的坚果云综合其他py_projectTeaCases文档处理重命名"
            target=rootPath+file_path         #我们要操作的每个文件的绝对路径      

ebf44b8eee83f6a1e697e4c71c38602e.png

上图中,我们要将wenshu这个文件夹中的文件全部重新命名,怎么操作呢,非常简单:

    for parent, dirnames, filenames in os.walk('wenshu', followlinks=True):  #dirnames 子文件夹
        for filename in filenames:
            file_path = os.path.join(parent, filename)
            if filename.endswith(".doc") or filename.endswith(".docx"):
                rootPath="C:坚果云我的坚果云综合其他py_projectTeaCases文档处理重命名"
                target=rootPath+file_path 
                pre_name=filename.split(".")[0]     #split是将字符串分割的函数,这里根据"."分割,获取不带后缀的文件名
                after_name=filename.split(".")[1]   #文件名后缀,例如“docx”
                newTarget=rootPath+'wenshugoodguy'+ str(index)  +"."+after_name  #新的文件的绝对路径
                os.rename(target,newTarget)
                index=index+1

因为不能在一个文件夹里存在多个同名文件,所以我们这里依次以数字表示,index从1开始,每成功一次,增加1。最终我们可得到的结果就出来了。

d8332644370f80b8a9ead663a715b099.png

目标文件夹中的文件全部都变成了goodguy和数字的组合,文件类型也不会改变。

通过上面的步骤,我们实现了文件目录里所有文件的重命名。有几个简单知识点,记得复盘哦。第一,目录和路径的含义。第二,文件夹所有文件的遍历操作。第三,重命名操作。

其实都非常简单,只要掌握了文件遍历操作,还可以实现更多其他操作,因为笔者时间有限,同时担心内容太多难以消化,故在下次文章当中继续介绍。

作者原创,非经授权拒绝转载,违者必究。

作者:虞元坚 上海正策律师事务所 律师 全栈网络工程师/法律大数据应用领域专家。擅长领域:争议解决与诉讼、与软件开发和互联网相关的知识产权、不正当竞争、经济犯罪、科技产业投融资等。欢迎关注法律大数据公众号,和律师朋友们都在使用的随身工具——律师云助理。

2ef9c1764fda87cd9339eaba3c8057bb.png
欢迎关注法律大数据公众号和使用律师云助理小程序



版权声明:本文为weixin_39977547原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。