подпроцесс Python

У Вас есть он, это - все. Но так, в основном, какой смысл объединений?

можно вставить то же содержание местоположения различных типов. Вы имеете к , знают тип того, что Вы сохранили в объединении (так часто, Вы помещаете его в struct с тегом типа...).

, Почему это важно? Едва ли для усилений пространства. Да, можно получить некоторые биты или сделать некоторое дополнение, но это больше не основной момент.

Это для безопасности типов, это позволяет Вам сделать некоторый 'динамический контроль типов': компилятор знает, что Ваше содержание может иметь различные значения и точное значение как Ваш интерпретировать Вам решать во времени выполнения. Если у Вас есть указатель, который может указать на различные типы, НЕОБХОДИМО использовать объединение, иначе Вы кодируете, может быть неправильным из-за искажения проблем (в компиляторе говорится себе, "о, только этот указатель может указать на этот тип, таким образом, я могу оптимизировать те доступы...", и плохие вещи могут произойти).

5
задан Jason Sundram 28 April 2012 в 19:51
поделиться

5 ответов

есть некоторые синтаксические ошибки ...

оригинал:

cmd=["ssh", sshConnect, "cd %s;"%(workDir), Fortrancmd %s jobname "%s -o  %s" exeFilename "%s && %s ./ %s%s"%(exeFilename)]

Я думаю, вы имеете в виду:

cmd = [
      "ssh",
      sshConnect,
      "cd %s;" % (workDir,),
      "%s %s -o  %s && ./%s" % (Fortrancmd, jobname, exeFilename, exeFilename)
      ]

Несколько примечаний:

  • кортеж с одним элементом требует запятой в конец первого аргумента см. (workDir,) для интерпретации как кортеж (по сравнению с простыми скобками порядка операций)
  • , вероятно, проще построить вашу команду fortan с помощью одной операции строкового формата

PS - Для удобства чтения часто рекомендуется разбивать длинные списки на несколько строк :)

мой совет

Я бы рекомендовал посмотреть этот поток stackoverflow для ssh вместо использования подпроцесса

3
ответ дан 14 December 2019 в 04:44
поделиться

Информацию о руководстве вы можете найти в pexpect или в windows wexpect . Это позволяет вам выполнять подпроцессы и передавать ввод в интерактивных условиях.

Однако большая часть того, что вы делаете, похоже, хорошо работает в сценарии оболочки. Для простоты вы можете создать сценарий оболочки на стороне сервера для операций на стороне сервера, а затем указать путь в операторе ssh:

ssh user@host "/path/to/script.sh"
2
ответ дан 14 December 2019 в 04:44
поделиться

одна ошибка:
у вас в списке аргументов есть% s без кавычек, поэтому форматирование строки не сработает.

1
ответ дан 14 December 2019 в 04:44
поделиться

нужно ли использовать python?

ssh user @ host "command"

0
ответ дан 14 December 2019 в 04:44
поделиться

Вот полный пример использования модуля подпроцесса для запуска удаленной команды через ssh (в данном случае простое эхо) и получения результатов, надеюсь, это поможет:

>>> import subprocess
>>> proc = subprocess.Popen(("ssh", "remoteuser@host", "echo", "1"), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> stdout, stderr = proc.communicate()

Что в данном случае case возвращает: ('1 \ n', '')

Обратите внимание, что для того, чтобы это работало без запроса пароля, вам, вероятно, придется добавить открытый ключ локального пользователя в ~ remoteuser / .ssh / authorized_keys на удаленной машине .

1
ответ дан 14 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

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