pexpect не соответствует команде, если больше 65 символов.

Как насчет

 for filepath in "$1/"*.flac 
 do
      ffmpeg -i "${file_path}" -f ...

где

  • «$ 1 /» *. FLAC Будет ли суффикс Garantee .FLAC в конце
  • Обязательно цитировать «$ {File_Path}»
  • BaseName можно найти с помощью BN = $ (BaseName "$ {file_path}")
  • BNNAME FLACENED BANENAME можно найти с помощью BNNF = $ (BaseName » $ {file_path} ".flac)

образец

A > ls -l Music 
total 0
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 foo bar
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 foo bar.flac
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 fubar
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 fubar.flac

Теперь запустить:

 A > for f in Music/*.flac; do echo $f; ls -l "$f" ; done 
Music/foo bar.flac
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 Music/foo bar.flac
Music/fubar.flac
-rw-rw-r-- 1 Arc Arc 0 Mar 14 03:37 Music/fubar.flac
0
13.08.2016, 18:06
2 ответа

В вашей программе есть 2 ошибки. Последняя строка недопустима:

ConnectToClient.expect(command, prompt) 

недействительна, так как expect принимает в качестве второго аргумента номер тайм-аута, а не строку.

Другая проблема заключается в том, что в вызове:

ConnectToClient.expect(prompt)

приглашение должно быть регулярным выражением (регулярное выражение). Вы предоставляете строку, которая будет скомпилирована в регулярное выражение. Однако в регулярном выражении символ [ является особенным, поэтому вам нужно его экранировать. Либо установите

prompt = r'\[root@user ~\]#'

, либо вместо использования .expect () используйте .expect_exact () , который хочет строк, а не регулярных выражений.

0
28.01.2020, 04:56

По умолчанию для pexpect windowsize установлено значение (24 строки и 80 столбцов) в моем случае, когда длина приглашения и команды превышает 80. Я столкнулся с этой проблемой. Изменив setwinsize (24,80) на setwinsize (24,150), он отлично работает.

0
28.01.2020, 04:56

Теги

Похожие вопросы