python下载文件并改名_用 Python 给下载的 B 站视频文件批量改名

有好几位网友私下里问我如何学习平面设计?我告诉他们:如果只想自学的话,可以先到“哔哩哔哩”网站(俗称 B 站)找视频教程看看。要是觉得哪个教程不错,还可以下载到电脑或手机上随时随地观看。

下载 B 站视频最好的电脑软件是 JiJiDown(如下图所示,我在《怎样在 Windows 电脑上下载 bilibili (B站)的视频?》一文中曾经介绍过它):

不过,JiJiDown 下载的视频文件名并不完美,比如下面这些:前面的序号位数不统一,影响文件排序;

后面的“(Av49811873,P1)”等字符串影响美观。

那怎么改变呢?以前,我都是用 Total Commander的“批量重命名”功能进行反复操作才能达到目的:

但最近开始自学 Python 编程,用不多的代码(除掉注释行 #,最多不过 20 行)就能达到同样的效果:

'''本程序的功能是:将形如 “ 1.Python基础1:版本、安装(Av49811873,P1).mp4 ”的文件全部改名为形如 “ 001.Python基础1:版本、安装.mp4 ” 的样子。'''

import os # 导入所需模块

# 实现字符串:“1.Python基础1:版本、安装(Av49811873,P1).mp4”

# 到 “001.Python基础1:版本、安装.mp4” 的转换

def bili_rename(num_len, old_name, flag):

# 将“1.Python基础1:版本、安装(Av49811873,P1).mp4” 拆解为:

# ('1', '.', 'Python基础1:版本、安装(Av49811873,P1).mp4')

li = old_name.partition('.')

# 将“1”转换为“001”

s1 = li[0].zfill(num_len)

# 去掉“Python基础1:版本、安装(Av49811873,P1).mp4”中的

# “(Av49811873,P1)”

s2 = li[2][0:li[2].index(flag)]

# 获取“Python基础1:版本、安装(Av49811873,P1).mp4”中的

# “.mp4”

s3 = li[2][li[2].rindex('.'):len(li[2])]

# 返回“001.Python基础1:版本、安装.mp4”

return f'{s1}.{s2}{s3}'

# 要全部改名的文件所在的文件夹

my_files = 'C:/最新Python系列教程/'

try:

# 获取要改名的所有文件的列表

bili_files = os.listdir(my_files)

# 遍历所有文件,进行改名操作

for i in range(len(bili_files)):

# 原文件名

b1 = my_files + bili_files[i]

# 新文件名

b2 = my_files + bili_rename(3, bili_files[i], '(Av')

# 调用所导入模块中的改名函数,完成具体改名操作

os.rename(b1, b2)

# 完成后提示用户

print('文件改名完成!')

except FileNotFoundError:

# 若找不到要改名的文件,报错

print('找不到指定的文件!')

以上代码在 Windows 10(64 位)系统和 Python 3.7.3 中测试通过,运行结果如下:

今后再遇到同样的问题,只要稍微改一下,代码依然可以使用,比借助其它第三方软件的效率都要高。

此外,在使用 InDesign 进行排版的过程中,往往也要处理一些复杂的文本,只使用它自带的功能常常不能满足需要。因此,学习和使用 Python 编写代码,对提高排版效率也是大有帮助,希望有此需求的朋友也学学。

相比其它编程语言,Python 上手容易,功能强大,对没有编程基础的普通人来说,还是不难掌握的。如果大家喜欢,今后我将不定期分享一些自己用它处理排版所需文本的代码。敬请期待!

你可能感兴趣的:(python下载文件并改名)