Какую версию python вы используете? Не уверен, что это изменилось в прошлом, но os.walk
возвращает не «subdirs» в качестве первого кортежа, а dirpath. Смотрите здесь для Python 3.6.
Я не знаю ваш абсолютный путь, но, учитывая, что вы передаете путь sound
в качестве относительной ссылки, я предполагаю, что это папка внутри каталога, в котором вы запускаете свой код Python. Например, предположим, что вы запускаете этот файл (назовем его mycode.py) из
/home/username/myproject/mycode.py
, и у вас есть некоторый подкаталог:
/home/username/myproject/sound/
Итак:
resultsDirectory = subdirs + '/MFCC/'
, как написано в вашем коде выше, разрешит:
/home/username/myproject/sound/MFCC/
Так что вашпервый оператор if будет введен, поскольку это не существующий каталог. Таким образом, вы создаете новый каталог:
/home/username/myproject/sound/MFCC/
Оттуда вы берете
filename in os.listdir(subdirs)
Это также представляется недоразумениемвывода этой функции. os.listdir()
вернет каталоги, а не файлы. Смотрите здесь для человека на этом.
Итак, теперь вы просматриваете каталоги в:
/home/username/myproject/sound/
Здесь, я полагаю, у вас уже есть некоторые каталоги из вашей диаграммы. Поэтому я предполагаю, что у вас есть:
/home/username/myproject/sound/machine_sound
/home/username/myproject/sound/gun_shot_sound
или что-то в этом роде.
Таким образом, оператор if никогда не будет введен, поскольку имена ваших каталогов не заканчиваются на «.wav».
Даже если он все же войдет, у вас все равно будут проблемы, так как filename
будет фактически равен machine_sound
в первом цикле и gun_shot_sound
во второй раз.
Возможно, вы используете какую-то другую библиотеку wav
, но встроенный Python называется wave
, и вам нужно вызвать wave.open()
для файла, а не wav.read()
. Смотрите здесь для документов.
Я не уверен, чего вы пытались достичь с помощью звонка на os.path.splitext(filename)[0]
, но вы можете прочитать об этом здесь В итоге вы получите то же, что и вхотя в этом случае machine_sound
и gun_shot_sound
.
Ваш выходной файл будет таким образом:
/home/username/myproject/sound/MFCC/machine_sound.csv
в первом цикле и
/home/username/myproject/sound/MFCC/gun_shot_sound.csv
второй раз до конца.
Итак, в заключение, я не уверен, что происходит, когда вы говорите: «Папка MFCC продолжает формироваться в уже сформированной папке MFCC», но у вас определенно впереди много чтения, прежде чем вы сможете понять свои собственные. код, и есть надежда исправить это, чтобы сделать то, что вы хотите. Предполагая, что вы прочитали ссылки, которые я предоставил, вы должны сделать это, хотя. Удачи!
Кроме того, в вашем коде, который я отредактировал, было довольно мало опечаток, включая очень важные пробельные символы. Вы должны очистить это и убедиться, что ваш код работает, прежде чем публиковать его здесь, а затем дважды проверить, что ваше действие копирования / вставки не привело к ошибкам. Люди будут гораздо охотнее помогать, если вы немного очистите свою презентацию.