Python 初学——V_Rename(第一个完整的python程序)

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

001

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

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

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

我有两个想法:

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

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

   1:  import os
   2:   
   3:  path = 'D:\\baiduyundownload\\struts2'
   4:  keyword = '_Struts2_'
   5:  rekeyword = '_'
   6:   
   7:  all_files = os.listdir(path)
   8:  for filename in all_files:
   9:      if os.path.isfile(path + '\\' + filename) and filename.find(keyword) != -1:
  10:          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倍了,呵呵

   1:  import os
   2:   
   3:  path = 'D:\\baiduyundownload\\struts2'
   4:  keyword = '_Struts2_'
   5:  rekeyword = '_'
   6:   
   7:  def getPath(path):
   8:      if path.strip() != '':
   9:          try:
  10:              os.chdir(path)
  11:          except os.error:
  12:              print(path + ": No such dir...")
  13:      else:
  14:          path = os.getcwd()
  15:      return path
  16:   
  17:  def findFiles(path, keyword):
  18:      all_files = os.listdir(path)
  19:      
  20:      files = []
  21:      for filename in all_files:
  22:          if os.path.isfile(path + '\\' + filename) and filename.find(keyword) != -1:
  23:              files.append(filename)
  24:      return files
  25:   
  26:  def replaceKeyword(files, keyword, rekeyword):
  27:   
  28:      refiles = []
  29:      for filename in files:
  30:          refiles.append(filename.replace(keyword, rekeyword, 1))
  31:      return refiles
  32:   
  33:  def renameFiles(files, refiles, path):
  34:      for i in range(len(files)):
  35:          try:
  36:              os.rename(path+'\\'+files[i],path+'\\'+refiles[i]);
  37:          except os.error:
  38:              print(path+'\\'+files[i] + ': wrong')
  39:              
  40:  path = getPath(path)
  41:  files = findFiles(path, keyword)
  42:  refiles = replaceKeyword(files, keyword, rekeyword)
  43:  renameFiles(files, refiles, path)

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

002

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值