bat和python批量重命名文件的实现代码


Posted in Python onMay 19, 2016

最近从某网站下载了一批文档,但是文件是用数字串命名的文档(很多图书馆都这样吧),现在我也下载完了这些文件,也有这些文件的列表,就是不能一个一个的把文件给重命名吧所以从网上找了这几个脚本。

一、使用bat脚本(windows系统默认可用)

打开记事本,将这些代码写入记事本,另存为xx.bat文件(注意后缀名,很多小白保存成了xx.bat.txt,因为txt是隐藏的,以为不行)

@echo off
for /r “d:\pdf” %%a in (*.pdf) do (
  for /f “tokens=1,2 delims= ” %%b in (1.txt) do ( 
  if “%%~nxa”==”%%b” ren “%%a” “%%c.pdf”
  )
)

要求文件放在d:/pdf文件夹下,文件后缀为.pdf,文件列表放在1.txt下面,txt保存为微软下的默认ANSI格式就好,内部内容格式为以下格式:

ts001003.pdf 世界科技全景百卷书(3)近代科技
ts001004.pdf 世界科技全景百卷书(4)蒸汽机带来的革命
ts001005.pdf 世界科技全景百卷书(5)现代科技

有需要的可以适当修改。

二、使用python脚本(windows系统需安装python 3.50 编译软件,约30M,linux估计需要升级python到3.50)

这个脚本是我花了好几个小时写的一个脚本(虽然学了好久编程,但是要流畅的写一个比较好的还是不顺手)
打开记事本,将这些代码写入记事本,另存为xx.bat文件(注意后缀名,很多小白保存成了xx.bat.txt,因为txt是隐藏的,以为不行)

#!/bin/env python
# -*- coding: utf-8 -*-
"""从某网站下载了一批文档,但是文件是用数字串命名的文档(很多图书馆都这样吧),
也有文档列表,所以写了一个脚本来重命名批文件

"""
__author__ = 'rublog'
import os

#1.txt文档要求每个文档一行,保存的时候必须为ANSI格式,前面是列表文档名含后缀(就是网站上文件名,一串数字
#或者字母什么的),空一格,然后是文档的真名(不带后缀)
#get_list这个从1.txt文本文件中一行一行的读取文件,去掉换行符,然后调用doc_rename
#函数
def get_list():
  #尝试不同的编码来自知乎 十五
  #https://www.zhihu.com/question/30070752/answer/46684320
  decode_list=["utf-8",'gb18030', 'ISO-8859-2','gb2312',"gbk","Error" ]#编码集
  #GBK不如GB18030覆盖得好,容易出错,故首先尝试GB18030。
  for k in decode_list:#编码集循环
    try:
      book_list = open('1.txt', encoding=k)
      #打开路径中的文本
      line = book_list.readline()
      while line:
        if os.name == 'nt':
          line = line.strip('\r\n')
        else:
          line = line.strip('\n')
        doc_rename(line)
        line = book_list.readline()
      break#打开路径成功跳出编码匹配
    except:
      if k == "Error":#如果碰到这个程序终止运行
        print("had no way to decode")
        raise Exception("%s had no way to decode"%directions)
      continue
#重命名,构造完整的路径和后缀
def doc_rename(book_list_line):
  try:
    name_list = book_list_line.split(' ')
    list_name = name_list[0]
    cool_list = list_name.split('.')
    ext = cool_list[-1]
    current_folder = os.getcwd()
    real_name = name_list[1]
    real_name = os.path.join(current_folder, real_name)
    real_name_ext = real_name+'.'+ext
    os.rename(os.path.join(current_folder, list_name), real_name_ext)
    print('success')
  except:
    pass
  return 0
#据说高手都会写的主函数
if __name__ == '__main__':
  get_list()

要求文件放在普通文件夹下,文件后缀可以任意(后缀要和txt内的列表后缀一样),文件列表放在1.txt下面,txt保存为微软下的默认ANSI格式或者UTF无BOM格式就好,内部内容格式为以下格式:

ts001003.pdf 世界科技全景百卷书(3)近代科技

ts001004.pdf 世界科技全景百卷书(4)蒸汽机带来的革命

ts001005.pdf 世界科技全景百卷书(5)现代科技

1.txt文档要求每个文档一行,保存的时候必须为ANSI或者UTF无BOM格式,其他格式没事测试,

前面是列表文档名含后缀(就是网站上文件名,一串数字#或者字母什么的),空一格,然后是文档的真名(不带后缀)

为方便大家使用特提供打包下载:
•读取txt重命名列表文件.zip

Python 相关文章推荐
python 自动提交和抓取网页
Jul 13 Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
Python中方法链的使用方法
Feb 23 Python
python使用opencv读取图片的实例
Aug 17 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
浅析python中while循环和for循环
Nov 19 Python
python pptx复制指定页的ppt教程
Feb 14 Python
python数据库编程 Mysql实现通讯录
Mar 27 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
Oct 02 Python
Python包argparse模块常用方法
Jun 04 Python
批处理与python代码混合编程的方法
May 19 #Python
python实现汉诺塔递归算法经典案例
Mar 01 #Python
python中list列表的高级函数
May 17 #Python
python模拟Django框架实例
May 17 #Python
python采用django框架实现支付宝即时到帐接口
May 17 #Python
图文详解WinPE下安装Python
May 17 #Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 #Python
You might like
php与java通过socket通信的实现代码
2013/10/21 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
Python的SQLAlchemy框架使用入门
2015/04/29 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
python计算日期之间的放假日期
2018/06/05 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
Linux开机引导的步骤是什么
2014/02/26 面试题
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
支行行长竞聘报告
2014/11/06 职场文书
会议欢迎词范文
2015/01/27 职场文书
召开会议通知范文
2015/04/15 职场文书
记者节感言
2015/08/03 职场文书