原因是自己下载的视频是使用win商店里面的bilibili UWP客户端。下载的视频都是这个000.flv,对应的视频信息都在对应文件夹的info.json里面。所以写一个脚本,把info.json里面的视频名称提取出来,然后重命名000.flv。
脚本很简单,但是之前想写一个多线程来实现这个脚本,但是实际上因为多线程执行是需要当前环境,而os.chdir()会改变pwd,导致多线程无法实现。可能是我能力有限,或许可以用协程?希望有大佬能指点一下。
import os, time, re
def get_list(i):
toppath = os.getcwd()
dir = os.listdir(toppath)
print("遍历第%d个文件夹"%(i+1))
print(dir[i])
print("进入第%d个文件夹内"%(i+1))
os.chdir(dir[i])
print("当前文件夹name")
print(os.getcwd())
print("sucess")
toppath = os.getcwd()
dir = os.listdir(toppath)
print("当前文件夹里面的东西:{}".format(dir))
rename_f(i)
print("修改名称后文件夹的东西:{}".format(os.listdir(toppath)))
print("*"*15)
print("回到父级目录")
os.chdir(os.path.dirname(os.getcwd()))
print(os.getcwd())
def rename_f(i):
if os.path.exists("000.flv"):
with open("info.json",'r', encoding='UTF-8') as f:
a = f.read()
# print(a)
matchObj = re.match(r'.*"title":"(.*)","path".*', a, re.M|re.I)
a = matchObj.group(1)
print("value:{}".format(a))
a_list = a.split()
print(a_list)
name = a_list[1] +' '+ a_list[2]
print(name)
os.rename("000.flv", name+".flv")
for i in range(len(os.listdir(os.getcwd()))-3):
get_list(i)