python批量重命名文件程序_bat和python批量重命名文件的实现代码

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

一、使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值