Несколько выходов с циклом for в Praat
У меня есть скрипт, в котором у меня есть несколько папок, каждая из которых содержит три аудиофайла с идентификатором #_1, ID#_2 и ID#_3. Пользователь может вводить строку разных идентификаторов, один за другим, а затем скрипт распознает разные идентификаторы и запускает код для каждого из них.
У меня для этого настроен цикл -
form Settings
comment Enter the IDs of the different subjects
sentence subjectIDs
endform
numOfSubjects = length(subjectIDs$)/4
for i from 0 to (numOfSubjects - 1)
subjectID$ = mid$(subjectIDs$, 1 + 4*i, 4 + 4*i)
outFile$ = subjectID$ + "/SubjectResponseOnsets" + subjectID$ + ".txt"
path$ = subjectID$ + "/" + subjectID$
@firstOutput
@secondOutput
@thirdOutput'
Каждая из этих процедур определена ранее в коде, и они в основном выводят определенные диапазоны от аудиофайлов до текстового файла.
Кажется, код работает нормально и правильно генерирует выходной файл, когда ему присваивается один идентификатор, но когда я пытаюсь запустить его с несколькими идентификаторами одновременно, выводится только текстовый файл для первого идентификатора.
Цикл for, кажется, не работает хорошо, но код работает нормально при первом запуске.
Буду очень признателен за любую помощь!
1 ответ
Я не знаю, правильно ли я понял, что пытался сделать твой сценарий, так как вставленный тобой фрагмент был неполным. Лучше всего, если вы предоставите код, который является исполняемым как есть. В этом случае вы пропустили закрытие endfor
и вы вызывали некоторые процедуры, которые не были определены в вашем фрагменте (даже в качестве заполнителей). Мне пришлось написать несколько фиктивных процедур, чтобы заставить его работать.
Так как вы также не сказали, как ваш сценарий вышел из строя, было неясно, что нужно исправить. Поэтому я попытался заставить его работать.
Это звучало так, как будто ваш код разделения идентификаторов доставлял вам некоторые проблемы. Я взял split
процедура от utils
плагин доступен через CPrAN, что облегчает ввод идентификаторов (полное раскрытие: я написал этот плагин).
form Settings
comment Enter the IDs of the different subjects
sentence subjectIDs 01 02 03
endform
@split: " ", subjectIDs$
numOfSubjects = split.length
for i to numOfSubjects
subjectID$ = split.return$[i]
path$ = subjectID$
outFile$ = path$ + "/SubjectResponseOnsets" + subjectID$ + ".txt"
# Make sure output directory exists
createDirectory: path$
@firstOutput
@secondOutput
@thirdOutput
endfor
procedure firstOutput ()
appendFileLine: outFile$, "First"
endproc
procedure secondOutput ()
appendFileLine: outFile$, "Second"
endproc
procedure thirdOutput ()
appendFileLine: outFile$, "Third"
endproc
# split procedure from the utils CPrAN plugin
# http://cpran.net/plugins/utils
procedure split (.sep$, .str$)
.seplen = length(.sep$)
.length = 0
repeat
.strlen = length(.str$)
.sep = index(.str$, .sep$)
if .sep > 0
.part$ = left$(.str$, .sep-1)
.str$ = mid$(.str$, .sep+.seplen, .strlen)
else
.part$ = .str$
endif
.length = .length+1
.return$[.length] = .part$
until .sep = 0
endproc
Если это не то, с чем у вас проблемы, вам нужно быть более конкретным.