今天下载了视频,但是视频格式是.mkv的,唱戏机不支持mkv格式,所以需要将后缀改成.mp4(其他文件格式也可以),由于视频比较多一个一个的更改比较麻烦,所以想到了用python来进行批量修改。
首先说一下流程
1.选定文件夹路径
2.遍历文件夹文件,获取文件全称(名称和格式)
3.将文件名名称与文件格式分开
4.将文件名称与新的格式组合
5.重命名操作
import os
#选定文件夹路径
path = 'D:XXX\\XXX\\' #此处是文件夹的地址
#遍历文件夹文件,获取文件全称(名称和格式)
file = os.listdir(path) #此处是以列表的形式获取文件夹内所有文件
c = 0#为下面标记一个序号
#遍历file这个列表
for i in file:
#print(i)#得到单独的全称
#将名称与后缀分开
find_mkv = os.path.splitext(i)
#转换成字符串格式,因为下面还有一个c+=1。
i = str(path)+i
#如果格式为.mkv
if find_mkv[1] == '.mkv':
#新的名字为文件名称+新的格式后缀
new_name = str(find_mkv[0]) + '.mp4'
#将上面的选定路径与新的文件名结合
new_name = path+str(new_name)
#重命名
# print(new_name)
#这个是os模块的重命名函数,i是未转换的完整路径比如D:\\XX\\XX.mkv
#new_name是重新结合后的完整路径比如D:\\XX\\XX.mp4
s1 = os.rename(i,new_name)
#加一个记录个数的前缀
c+=1
print(f'{c} {new_name}已完成')
print('已全部转换完毕')
没写过几次博客,可能有些地方表述不清楚,欢迎指正!!!
如果有什么问题,欢迎指正!!!
import os
import shutil
'''运行环境3.11.4'''
class rennames:
def __init__(self,path):
'''初始化函数'''
self.path = path
self.File_handling() #执行文件预处理函数
def File_handling(self):
'''文件预处理'''
parent_dir = os.path.dirname(self.path) #获取文件夹的上层路径
end_mikdir = os.path.dirname(parent_dir) #获取parent_dir的路径
self.end_path = os.path.join(end_mikdir,"转换后\\") #在需要转换的文件夹基础上创建转换后文件夹
if not os.path.exists(self.end_path): #如果文件夹不存在
os.makedirs(self.end_path) #使用os.makedirs()函数创建文件夹
else:
self.ss = os.listdir(self.end_path) #如果文件夹存在,将文件夹里面的内容传递下去
def former(self):
'''把文件夹的.mkv内容复制到新文件夹夹'''
path = self.path #选定转换内容文件夹路径
former_file = os.listdir(path) #获取文件名称(名称和格式)
for i in former_file: #遍历文件夹
find_mkv = os.path.splitext(i) #将名称与文件类型分开
if find_mkv[1] == '.mkv': #如果格式为.mkv
com_path = os.path.join(path,i) #获取到文件的完整路径
#print(i+"这里")
try:
self.ss.index(find_mkv[0]+".mp4") #查表操作,避免重复的复制文件
#print('重复')
except:
shutil.copy2(com_path,self.end_path) #只复制后缀为.mkv的文件
def end(self):
'''转换函数'''
end_path = self.end_path #选定转换后内容的文件夹
end_file = os.listdir(end_path) #获取文件名称(名称和格式)
c = 0 #创建一个计数器
for x in end_file: #遍历转换后的文件
find_mkv = os.path.splitext(x)
if not find_mkv[1] == '.mp4':
s2 = os.path.join(end_path,x) #路径拼接s2是end_path文件夹下的文件绝对路径
find_mkv = os.path.splitext(x) #转换后的路径与名称
new_name = os.path.join(end_path, str(find_mkv[0]) + '.mp4')
s1 = os.rename(s2,new_name) #重命名,参数1需要重命名的完整路径,参数2重命名后的完整路径
c+=1 #计数器加1
print(f'{c} {new_name}已完成') #打印一下转换的进度
def run(self):
'''运行函数'''
self.former()
self.end()
print('运行结束')
if __name__ == '__main__':
res = rennames("转换前\\") #将相对路径传入进去
res.run()