在python3中递归读取文件时出现名称错误

时间:2019-01-11 22:53:16

标签: python python-3.x

我有一个名为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})

0 个答案:

没有答案