2013-08-21 5 views
0

Я хочу запустить две команды в последовательности:с помощью питона os.system для 2 процесса

  1. Перейти /вар/TMP/тест папки
  2. Затем СВН кассе здесь

для того, чтобы сделать это, я написал этот сценарий:

open_folder = "cd /var/tmp/%s" % (folder_name) 
cmd = "%s %s/%s/%s && %s %s/%s/%s" % (svn_co, svn_co_directory, fst_product_name, fst_firmware_name, svn_co, svn_co_directory, snd_product_name, snd_firmware_name) 
    os.system(open_folder) 
    os.system(cmd) 

Он создает folder_name, но не заказывается в folder_name. Он проверял мой текущий каталог. Зачем?

ответ

1

Попробуйте os.chdir(path), чтобы сменить адрес. Или вы можете использовать эту папку в качестве префикса во второй команде. This объясняет, почему cd не будет работать.

Я бы предпочел использовать subprocess.Popen(..) вместо os.system. Он позволяет указать текущий рабочий каталог для команды, которую вы выполняете.

+0

благодарит за комментарий. Я посмотрел на объяснение, которое вы отправили. Я хочу задать еще один вопрос. Вы знаете, что такое процесс и подпроцесс? Я имею в виду, чем они отличаются? – caesar

+1

Я не уверен, правильно ли я прав. Если вы запустите свою программу python, это будет процесс в ОС. Выполняя команды типа 'cd', вы вызываете другой исполняемый файл. Этот исполняемый файл выполняется в собственном процессе, который является подпроцессом вашей программы python, потому что вы его вызывали. Надеюсь, это ответит на ваш вопрос. Если кто-то знает это лучше, пожалуйста, поправьте меня. – LostAvatar

+0

Большое вам спасибо! – caesar

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