2017-02-21 16 views
1

У меня возникла проблема с выполнением команды оболочки в python. Вот какая-то часть моего кода, который вызывает ошибку:Python. sed -e выражение # 1: команда char 11: unterminated 's

p = subprocess.Popen(["cat input.txt |apertium -d. kaz-morph|\ 
    sed -e 's/\$\W*\^/$\n^/g'| cut -f2 -d'/'|cut -f1 -d '<'|\ 
    awk '{print tolower($0)}'|sort -u>output.txt"], shell=True, stdout=f1) 

все еще получаю сообщение об ошибке: команда незакрытых «S».

Надеется, что вы мне помочь, потому что я не мог решить в течение 10 дней :(

п.с. извините за мой английский

+0

также, с 'оболочкой = true', просто строка в порядке, нет необходимости использовать список строки – Sundeep

+0

Возможно, было бы проще поместить этот скрипт в отдельный файл, например. '~/morph-and-sort.sh' и do' chmod + x ~/morph-and-sort.sh' и изменить python на 'Popen ([" ~/morph-and-sort.sh "], shell = True, стандартный вывод = f1) ' – unhammer

ответ

2

'\n' должен быть '\\n', иначе он интерпретируется как разрыв строку, которая . приводит к незавершенной строке "cat input.txt |apertium -d. kaz-morph|sed -e 's/\$\W*\^/$"

в качестве альтернативы, отметьте строку в качестве сырья:. r"cat input.txt |apertium ...."

 Смежные вопросы

  • Нет связанных вопросов^_^