Python как "пакетный" script (т.е. запустить команды из python) - программирование

Python как "пакетный" script (т.е. запустить команды из python)

Я работаю в среде Windows (мой ноутбук!), и мне нужно несколько сценариев, которые запускают другие программы, в значительной степени похожие на пакетный файл Windows.

как я могу запустить команду из python, чтобы программа при запуске заменила script? Программа интерактивна (например, унисон) и продолжает печатать строки и постоянно спрашивать пользователя.

Итак, просто запустить программу и распечатать вывод не хватит. Программа должна принять вход/выход script, довольно mcuh, как запуск команды из .bat файла.

Я пробовал os.execl, но он продолжает говорить мне "недопустимые аргументы", также он не находит имя программы (не ищет переменную PATH); Я должен дать ему полный путь.?!

в принципе, в пакете script могу написать: Профиль унисона

как я могу добиться такого же эффекта в python?

EDIT:

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


EDIT: это должен был быть комментарий, но когда я опубликовал его, у меня не было много очков.

Спасибо Клаудиу, это в значительной степени то, что я хочу, за исключением маленькой вещи: я хочу, чтобы функция заканчивалась, когда программа выходит, но когда я пытаюсь ее унисон, она не возвращает управление python script, но для среды командной строки Windows

>>> os.execlp("unison")

C:\>Usage: unison [options]
    or unison root1 root2 [options]
    or unison profilename [options]

For a list of options, type "unison -help".
For a tutorial on basic usage, type "unison -doc tutorial".
For other documentation, type "unison -doc topics".

C:\>
C:\>
C:\>

как обойти это?

4b9b3361

Ответ 1

Я узнал, что os.system делает то, что я хочу,

Спасибо за все, что пытались помочь.

os.system("dir")

запускает команду так же, как если бы она запускалась из пакетного файла

Ответ 2

Вам нужно создать новую процессу, используя модуль

Ответ 3

import subprocess

proc = subprocess.Popen(['unison', 'profile'], stderr=subprocess.PIPE,      
                        stdout=subprocess.PIPE, stdin=subprocess.PIPE)

proc.stdin.write('user input')
print proc.stdout.read()

Это поможет вам начать работу. Пожалуйста, отредактируйте свой вопрос с дополнительной информацией, если вы хотите получить более подробный ответ!

Ответ 4

os.execlp должен работать. Это приведет к поиску вашего пути к команде. Не давайте никаких аргументов, если они не нужны:

>>> import os
>>> os.execlp("cmd")

D:\Documents and Settings\Claudiu>Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

D:\Documents and Settings\Claudiu>