Перенаправление прерывает вывод (Python Script)

Вы можете использовать цикл whileвокруг документа здесь -:

while IFS= read -r x; do
  cat << EOF > "${x}_M0.ctl"
  seqfile = ${x}_p.phy
  treefile = Sametree.txt
  outfile = ${x}_M0_mlc

    getSE = 0
    RateAncestor = 1
    Small_Diff = 5e-7
    cleandata = 1
    fix_blength = 2
    method = 0
EOF
done < list.txt

Если строки в вашем list.txtимеют начальные или конечные символы SPC или TAB, которые должны не интерпретироваться как часть имени файла (, и вы не изменили иным образом переменную IFS), затем опустите назначение IFS=перед командой read:

.
while read -r x; do

Или явно установите SPC и TAB:

while IFS=$' \t' read -r x; do

(обратите внимание, что расширение его на другие пробельные символы, такие как CR, FF, NBSP... не будет работать, поскольку они не получают специальной обработки пробелов IFS, только SPC, TAB и NL ).

0
28.07.2020, 12:45
1 ответ

Я переработал скрипт на Python, не зная одной детали:

Сценарий работает на Python 2 и импортирует функцию printиз пакета __future___как eprint. Это было напечатано в stderr, в то время как все, что напечатано сprint(по умолчанию Python 2 ), было напечатано в stdout. Это вызвало

  • операторы print, отсутствующие в прогоне A, и операторы eprintдля отображения на экране
  • операторы printдолжны быть сохранены в "output.txt" в Run B, в то время как операторы eprintбыли сохранены
  • nohub направляет как stderr, так и stdoutв файл. Итак, в Run C все было направлено в выходной файл. Однако я до сих пор не могу объяснить обратный порядок.

Только использование eprintрешило все мои проблемы.

Спасибо @Panki за то, что направил меня сюда

1
18.03.2021, 23:16

Теги

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