我在大一的时候就对python非常感兴趣,就是一直没有时间和机会去学习下,只是了解些表面的东西,今天早上整理电脑的时候发现文件夹里面的文件名是这样子的,有点小不舒服,特别想去除重复的“Struts2”的字样

我知道windows下直接用命令行就能重命名所有文件,网上也有很多方便的重命名软件,记得在Mac下用过一个软件叫NameChanger,特别好用。可是今天我确一点都不想用这些软件,因为我想自己编程实现我想要的重命名功能。

使用python实现这个应该很简单的,我想会在10行以内就能完成吧。记得我大一的时候有用过C语言做过文件管理,那时候最担心的就是指针的问题了,python让我都感觉不到指针的存在。

我开始的思路是使用正则来找出我要的文件然后替换关键字,后来发现正则有点牛刀小用了,就直接使用python的字符串操作来实现了。

我有两个想法:

第一个是不使用函数,用一个for循环来解决,这样的话代码量将会最少。

结果让我很惊讶python的实力了,真的代码就只有10行!!!有点不敢相信啊,呵呵

import os

path = 'D:\\baiduyundownload\\struts2'
keyword = '_Struts2_'
rekeyword = '_' all_files = os.listdir(path)
for filename in all_files:
if os.path.isfile(path + '\\' + filename) and filename.find(keyword) != -1:
os.rename(path + '\\' + filename,path+'\\'+filename.replace(keyword, rekeyword, 1))
 

第二的想法就是包装成函数,分步来实现,

1. 得到带有关键字文件名数组:findFiles(path, keyword)

2. 得到一个替换关键字后的文件名数组:replaceKeyword(files, keyword, rekeyword)

3. 根据前两个数组重命名文件:renameFiles(files, refiles, path)

当然我还增加了异常捕获提醒,总共代码下来就翻了4倍了,呵呵

import os

path = 'D:\\baiduyundownload\\struts2'
keyword = '_Struts2_'
rekeyword = '_' def getPath(path):
if path.strip() != '':
try:
os.chdir(path)
except os.error:
print(path + ": No such dir...")
else:
path = os.getcwd()
return path def findFiles(path, keyword):
all_files = os.listdir(path) files = []
for filename in all_files:
if os.path.isfile(path + '\\' + filename) and filename.find(keyword) != -1:
files.append(filename)
return files def replaceKeyword(files, keyword, rekeyword): refiles = []
for filename in files:
refiles.append(filename.replace(keyword, rekeyword, 1))
return refiles def renameFiles(files, refiles, path):
for i in range(len(files)):
try:
os.rename(path+'\\'+files[i],path+'\\'+refiles[i]);
except os.error:
print(path+'\\'+files[i] + ': wrong') path = getPath(path)
files = findFiles(path, keyword)
refiles = replaceKeyword(files, keyword, rekeyword)
renameFiles(files, refiles, path)

两个想法的最后实现效果是一致的啦:

去除重复的字符是不是看着很舒服啊,哈哈,我觉得实现的过程更是一种享受。越来越喜欢python了!!!



Python 初学——V_Rename(第一个完整的python程序)的更多相关文章

  1. Python自动化 【第一篇】:Python简介和入门

    Python简介: 一.什么是python Python是一门动态解释性的强类型定义语言. pythonde 特点:“优雅”.“明确”.“简单”. 二.Python由来 python的创始人为吉多·范 ...

  2. Python开发【第一章】:Python简介和入门

    Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...

  3. Python进阶【第一篇】:Python简介

    Python简介 1.Python的由来 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 2.C 和 Python.Ja ...

  4. C语言学习002:第一个完整的C程序代码

    #include <stdio.h>//引用相关的外部库,stdio.h包含了终端读写数据的代码 //程序入口,程序通过main函数的返回值判断程序是否运行成功,0表示成功,非0表示程序运 ...

  5. python初学第一节课

    ### python的基础 推荐学习python的一些资料, 首先就是书籍<Python从入门到实践>, 这本书评分很高, 主要是对Python讲解的比较清楚, 后面还有具体的实战项目 推 ...

  6. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备

     孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自 ...

  7. Python之路第一课Day4--随堂笔记(迭代生成装饰器)

    上节回顾: 1.集合 a.关系测试 b.去重 2.文件操作及编码 3.函数 4.局部变量和全局变量 上节回顾 本节课内容: 1.迭代器生成器 2.装饰器 3.json pickle数据序列化 4.软件 ...

  8. Python之路【第一篇】:Python简介和入门

    python简介: 一.什么是python Python(英国发音:/ pa θ n/ 美国发音:/ pa θɑ n/),是一种面向对象.直译式的计算机程序语言. 每一门语言都有自己的哲学: pyth ...

  9. Python之路第一课Day1--随堂笔记

    课堂大纲: 一.Python介绍 二.发展史 三.Python 2 or 3? 四.安装 五.Hello World程序 六.变量 七.用户输入 八.模块初识 九..pyc是个什么鬼? 十.数据类型初 ...

随机推荐

  1. 沈逸老师PHP魔鬼特训笔记(6)--巫术与骨架

    PHP最牛逼的特性之一除了懒人函数,还有一些魔法函数. 首先我们来认识下__tostring,通过一个巫术方法,我们吧实例转化过后的类,直接当字符串输出.结合我们前面所做的功能,我们在类里面加上这个函 ...

  2. Error reading from file 解决办法

    最近安装程序遇见这个问题: Error reading from file. 解决办法: 给这个程序添加权限: 添加SYSTEM的读写改..如果比较懒,直接全部允许. 然后Retry.

  3. hdu 4144 状态压缩dp

    #include<map> #include<set> #include<cmath> #include<queue> #include<cstd ...

  4. Sass和Compass设计师指南

    注:配合查看:Sass 为什么使用Sass和Compass? 1.减少重复工作,加快开发进度 2.使用变量,便于记忆,变量使用$符号开头 3.自动转换RGBA颜色值 .color { color: $ ...

  5. WebAPI GET和POST请求的几种方(转发)

    WebAPI GET和POST请求的几种方式 GET请求 1.无参数get请求 一般get请求有两种写法,一种是$.get()   一种是$.ajax({type:"get"}), ...

  6. 检测URL地址是否有响应

    今天突然出来了一个问题,URL地址调用导致程序卡死(原因是服务挂了,磁盘坏了) 然后想到了,再调用URL地址前先判断下地址是否有响应,这样不就可以解决问题了吗? C# 代码: /// <summ ...

  7. AMQ学习笔记 - 17. 事务的测试

    概述 对事务机制进行测试. 测试实例 测试实例 结果预测 发送正常 3条消息入队 发送异常 0条消息入队 接收正常 3条消息出队 接收异常 0条消息出队 demo设计 设计图 测试分工 测试类 测试方 ...

  8. 解析Path方法备忘

    public static String parseDataPath(String dataPath){ StringBuilder parseBld = new StringBuilder(); L ...

  9. 关联表映射 Association Table Mapping

    把关联保存为一个表,存储关联表的外键 在对象中,使用集合作为域值,来处理多值域. 而在DB中,只能有单值域. 外键映射的核心,是在关联关系的单值端使用外键来维持联系. 而在多对多的关联关系中,已经不存 ...

  10. While readingiphone真机无法显示图片,而模拟器可以正常显示

    可能,很多开发IOS程序的遇到过在模拟器里,加载图片都是正常的,但是在真机里就会出现图片资源不能加载的问题. 其中一种原因是,在Simulator里面,例如:图片资源名称为:a.PNG,在代码你里,你 ...