【编程简化生活】Deleter,为批量处理而生

image

人人可以编程

计算机发展至今,已经实现了普及化。相应的,驱动计算机的程序已经遍布了世界的每一个角落。过去,编写程序是件高门槛的事,整件事情对于普通人来说就像外星人一样陌生。

但是现在,相信我,人人可以编程,甚至它应该作为你使用计算机的一种必备能力。整个网络世界里各种教程,编程语言也越来越人性化(有时候看一段程序,你甚至都会有一种看文章的感觉),丰富的库和封装让你对于一些复杂的东西可以拿来就用,而不必知道为什么。这些对于一个普通的计算机用户而言就够了。当你想要简化生活、提高效率时,你可以随时开始动手!

是的,你只需要花上几个小时,也许可能是2、3天,稍微学习一门编程语言的基础语法,你就可以利用互联网的资源开始编写简化你生活的小工具了。对大多数人的个人小工具而言,也许你可以考虑把它做的美观一点,但我觉得关于代码的效率、优雅你不应该去考虑。对你而言,只要逻辑梳理通顺,程序跑起来,功能基本可以使用就够了。这就是为什么我说,花上一点时间学习一点基础语法就行的原因。

嘿,这绝对是一件低投入,高回报的投资!

用编程简化生活

CoorChice作为一只靠编程吃饭的帅猿,自然要好好利用编程能力去简化生活、提高效率。一些繁杂的事情,它们可是体力活!我只需要写一个简单小程序去帮我完成就行。一劳永逸就是这么爽!

比如我现在要举例的Deleter。

Deleter,为批量处理而生

我之所以需要一个Deleter,是因为CoorChice发现,我总是不可避免的经常要对大量的文件名做些什么。删除文件名的一部分、替换文件名的一部分、为文件名添加新的成分等等简单,但是繁琐而消耗时间的事情。因此,CoorChice编写了Deleter来帮助我完成这些事情。原本我可能需要花上几个小时,甚至一天去做的体力活,现在只需要几秒钟!这就是我所说的简化生活。

下面,CoorChice将向你展示Deleter是如何帮助我简化生活,提高效率的,并会附上它的实现代码。

对于一些小工具,CoorChice会选择使用Python来编写。因为它像白话文一样简洁,并且有相当多的开源库可供使用。对于大多数而言,选择Python来作为简化生活的编程语言,看起来是很明智的。尽管不用去纠结那几毫秒的效率,忽略它吧。这就是我学习Python想要做的事。

使用Deleter

你可以直接下载这个Python程序:

Deleter下载地址

或者复制文末的代码,然后保存为.py文件。

运行它你只需要打开命令行,进入到Python程序所在的目录,然后输入:

python Deleter.py

接着,一个Python程序就被运行起来了。但是,有一个前提是你必须安装过Python环境。

怎么安装来着?或许你该试着在网上找找所需要的信息。可以看看CoorChice的这篇文章,关于如何进行互联网搜索的:【这十个搜索技巧至少价值100万!:http://www.jianshu.com/p/a2f0f5a39cc3】

一切顺利的话,你将能看到如下界面:

image

批量替换文件名内容

image

上图是一个序列帧图的文件集合,它包含了很多很多张图片。现在我想要给它们重新命名。如果没有Deleter这个程序,想想看,这么多,我得一个个改。它将会花费我将近一个小时的时间!我经常面对着比这多的多的文件需要修改,如果没有Deleter,天知道有多少时间将花费多少时间在这些无意义的事情上。即使用上脚趾头和手指头一起去计算,也不能算的出来!

现在,在Deleter中的【路径】输入框输入这些文件所在的目录完整地址;接着在【需要删除的内容】输入框输入:mike,即想要删除的的内容;然后在【替换的新内容】输入框输入:newname,即想要替换的新内容。就像这样:

image

最后点击【Sure】。1s后:

image

嗯,成功替换了所有文件名。这次CoorChice省下了59分55秒的时间。

批量删除文件名的指定部分

基本操作和上面一样,你只需要把【替换的新内容】输入框空出来就行了。

image

点击【Sure】。

image

需要注意,如果文件名中包含多个与需要删除内容相同的字段,那么Deleter将会从后往前删除,并且每次只能删除一个地方的。

在文件名首端批量添加字段

这次需要把【需要删除的内容】输入框空出来,像这样:

image

点击【Sure】。

image

注意,新增的内容是从首端插入哦。

实现代码

那么实现上面这些功能的程序的代码长什么样呢?

# coding=utf-8
from Tkinter import *
import os


def sure():
    global path
    path = path_entry.get()

    global suffix
    suffix = suffix_entry.get()

    global new_content
    new_content = new_content_entry.get()

    change_name()


def change_name():
    os.chdir(path)
    for file in os.listdir(path):
        if file.rfind(suffix) != -1:
            print 'before: ' + file
            old_name = file
            start_index = 0
            end_index = 0
            if len(suffix) > 0:
                start_index = file.rindex(suffix)
                end_index = start_index + len(suffix)
            if end_index != start_index:
                file_length = len(file)
                end_content = file[end_index:file_length]
                start_content = file[0:start_index]
                new_name = start_content + new_content + end_content
            else:
                new_name = new_content + file
            print '-----> after: ' + new_name
            os.rename(old_name, new_name)


# UI
root_view = Tk()
root_view.title('Deleter')
root_view.geometry("300x120")  # 是字母x,不是*!

path_label = Label(root_view, text='路径')
path_label.grid(row=0)
path_entry = Entry(root_view)
path_entry.grid(row=0, column=1)

suffix_label = Label(root_view, text='需要删除的内容')
suffix_label.grid(row=1)
suffix_entry = Entry(root_view)
suffix_entry.grid(row=1, column=1)

new_content_label = Label(root_view, text='替换的新内容')
new_content_label.grid(row=2)
new_content_entry = Entry(root_view)
new_content_entry.grid(row=2, column=1)

btn_sure = Button(root_view, text='Sure', command=sure)
btn_sure.grid(row=3, column=1)

root_view.mainloop()

大家可以看到,非常短的一段代码。但是它所实现的功能,一直以来帮助CoorChice节省了大量的时间,而我编写它只需要花上几分钟。当然,这段代码任然可以优化,但是我想我不会花时间去优化它。因为对于我而言,它已经解决了我的问题,并且所花费的时间我甚至可以忽略掉。所以,我不会花费时间去把代码优化的优雅,或者让它的执行效率能快上那么几毫秒。我想你知道我要说什么。

开始编程吧

CoorChice之所以分享自己的简陋的小工具,其实是想说明,在这个时代,你只需要掌握简单的编程知识,你就能够通过编程来简化你的生活。有用的程序不一定需要多晦涩难懂的知识,或者像混乱的线球一样复杂的逻辑才能实现。你只需要一点点编程语言基础,加上一点点小逻辑,一道程序就能新鲜出炉了。而且一次编写,反复使用!

对于我们大多数人而言,这就够了。

感谢阅读,请点赞吧亲!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,406评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,976评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,302评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,366评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,372评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,457评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,872评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,521评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,717评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,523评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,590评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,299评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,859评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,883评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,127评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,760评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,290评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,357评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,577评论 18 139
  • 170730 送小姨他们参加了去苏格兰的旅行团。 迫不及待去找他,见到他的时候,有一种钻到骨子里的感觉,这种感觉被...
    XxXxXxN阅读 104评论 0 0
  • 生容易,活容易, 生活真的不容易; 你不易,我不易, 其实谁都不容易!
    沈姐说说阅读 257评论 2 4