设为首页 收藏本站
查看: 941|回复: 0

[经验分享] Python 初学——V_Rename(第一个完整的python程序)

[复制链接]

尚未签到

发表于 2015-4-24 08:21:10 | 显示全部楼层 |阅读模式
  我在大一的时候就对python非常感兴趣,就是一直没有时间和机会去学习下,只是了解些表面的东西,今天早上整理电脑的时候发现文件夹里面的文件名是这样子的,有点小不舒服,特别想去除重复的“Struts2”的字样
DSC0000.png
  我知道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,path+'\\'+refiles);
except os.error:
print(path+'\\'+files + ': wrong')
path = getPath(path)
files = findFiles(path, keyword)
refiles = replaceKeyword(files, keyword, rekeyword)
renameFiles(files, refiles, path)
  两个想法的最后实现效果是一致的啦:
DSC0001.png
  去除重复的字符是不是看着很舒服啊,哈哈,我觉得实现的过程更是一种享受。越来越喜欢python了!!!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60125-1-1.html 上篇帖子: python中关于with及contextlib的用法 下篇帖子: Python 的 IDE
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表