我试图为for循环的每个遍历创建一个单独的数组,以便存储wavefile.read函数生成的“ signal”值。
关于代码如何工作/ Id希望如何工作的一些背景:
我具有以下文件路径:
sub
现在,对于每个“标签文件夹”,我想创建一个数组来保存其各自子目录中包含的所有.wav文件的值。
这是我尝试的:
Root directory
Labeled directory
Irrelevant multiple directories
Multiple .wav files stored in these subdirectories
Labeled directory
Irrelevant multiple directories
Multiple .wav files stored in these subdirectories
上面是数据帧df的快照
最终,这些数组的原因是我想计算每个标记的子目录中包含的wav文件的平均平均时间长度,并将其作为列向量添加到数据帧中。
请注意,数据框的索引与目录名称相对应。我感谢所有帮助!
答案 0 :(得分:0)
您发布的代码段可以简化和现代化。这是我想出的:
我有以下目录结构:
在我的示例中,我使用的是文本文件而不是wav文件,因为我手边没有任何wav文件。
在我的root
中,我有A
和B
(它们应该是您的“标记目录”)。 A
有两个文本文件。 B
有一个立即文本文件和一个子文件夹,内部有另一个文本文件(这是为了模拟“无关的多个目录”)。
代码:
def main():
from pathlib import Path
root_path = Path("./root/")
labeled_directories = [path for path in root_path.iterdir() if path.is_dir()]
txt_path_lists = []
# Generate lists of txt paths
for labeled_directory in labeled_directories:
txt_path_list = list(labeled_directory.glob("**/*.txt"))
txt_path_lists.append(txt_path_list)
# Print the lists of txt paths
for txt_path_list in txt_path_lists:
print(txt_path_list)
return 0
if __name__ == "__main__":
import sys
sys.exit(main())
输出:
[WindowsPath('root/A/a_one.txt'), WindowsPath('root/A/a_two.txt')]
[WindowsPath('root/B/b_one.txt'), WindowsPath('root/B/asdasdasd/b_two.txt')]
如您所见,我们生成了两个文本文件路径列表,每个带标签的目录一个。我使用的全局模式(**/*.txt
)处理多个嵌套目录,并递归查找所有文本文件。您所要做的就是更改glob模式中的扩展名,使其改用.wav文件。