我有一个名为root的递归目录。首先,我想找到顶层文件夹。我的意思是,当我单击根文件夹时,假设我看到其中的3个文件夹,这3个文件夹是顶级文件夹。其中的每个对应于循环中的sub_root。我在每个sub_root中打开一个csv文件。然后递归地读取每个sub_root中的文件,并写入tinytag获取的元信息。
我的代码如下。我收到一个'NameError:名称'title'未定义'。我知道在'title = tag.filesize'中已经使用了tag.filesize,我有意设置该思维,如果错误是由于在我的代码中注释掉的filename引起的,那应该可以修复该错误。我似乎找不到该错误。
top_dir_list= next(os.walk(root))[1]
for j in range(0,len(top_dir_list)):
sub_src=top_dir_list[j]
sub_root=os.path.join(root,sub_src)
result_csv=os.path.join(sub_root,'metainfo.csv')
with open(result_csv, 'w',encoding='utf-8') as csvfile:
fieldnames=['filename','duration','filesize'] # keys.
csv_writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
csv_writer.writeheader()
dirfiles=[]
for path, subdirs, files in os.walk(sub_root):
for item in files:
dirfiles.append(os.path.join(path, item))
length=len(dirfiles)
for i in range(0,length):
if dirfiles[i].endswith('.rar'):
print('this is a rar file:', dirfiles[i])
elif (dirfiles[i]).endswith(('mp3', 'wav')):
#title=os.path.basename(dirfiles[i])
title=tag.filesize
tag = TinyTag.get(dirfiles[i])
duration=tag.duration
filesize=tag.filesize
else:
print("This file type is not supported:",dirfiles[i])
csv_writer.writerow({'filename':title,'duration':duration,'filesize':filesize})