Запустить команду Putty из python

В настоящее время у меня есть файл .sh, из которого я запускаю команду с именем metl. metl — это пакет Python, который помогает извлекать, преобразовывать и загружать данные практически из любого источника.

Обычная процедура, которая мне нужна в консоли шпатлевки и отлично работает, следующая:

metl -m migration.pickle1 
     -t migration.pickle2 
     -s filename.csv 
     config_file.yml

Процедура, которую я запускаю из своего файла .sh и которая также работает правильно, выглядит следующим образом:

metl -m migrationfiles/"${migbefore}" \
    -t migrationfiles/"${migafter}" \
    -s "${y}" \
    config_file.yml

Извините, я не был достаточно ясен раньше, в общем, я хочу запустить скрипт Python из консоли PuTTY, а внутри этого скрипта Python мне нужно запустить команду PuTTY, о которой я упоминал ранее (metl -m migration.pickle1....)

Итак, что я пытаюсь запустить, так это:

import os

os.system("metl -m " + path + ""\"" + migbefore + "-t " + path + ""\"" + migafter + "-s " + csvfile + " " + directory + ""\"" + config_file.yml)

person Johan Garzon    schedule 25.09.2014    source источник
comment
Какое это имеет отношение к PuTTY? Кроме того, укажите проблемный код, команду, которую вы используете для его запуска, что он делает и чем он отличается от ожидаемого.   -  person l0b0    schedule 26.09.2014
comment
Попробуйте удалить все ""\"" подстроки из вашего кода (вам это не нужно). Но если вам нужно поставить "\", используйте "\\" вместо ""\"".   -  person Ilya    schedule 26.09.2014
comment
Также config_file.yml должен быть в кавычках. Просто поставьте кавычки правильно, чтобы решить эту проблему.   -  person Ilya    schedule 26.09.2014
comment
Я также попробовал это решение и отлично сработал, мне удалось решить проблему с исправлением кавычек в утверждении, большое спасибо!   -  person Johan Garzon    schedule 26.09.2014


Ответы (1)


Я бы предложил использовать:

import subprocess
proc_args = ['metl', '-m', 'arg2', ....]
process = subprocess.Popen(proc_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)
person Stefan Friedrich    schedule 26.09.2014