Как запускать команды оболочки ОС в IronPython / Mono? - PullRequest
5 голосов
/ 01 мая 2009

Я бы хотел попробовать IronPython и Mono. Специально делать задачи сисадмина. Что часто означает запуск команд ОС. В CPython я использую модуль подпроцесса для таких задач. Но в IronPython (v2.0.1, Mono 2.4, Linux) нет модуля подпроцесса. Кажется, там даже нет модуля 'os'. Поэтому я не могу использовать os.system (). Каким образом IronPython может выполнять задачи, для которых вы обычно используете «подпроцесс» или «os.system ()» для CPython?

Ответы [ 4 ]

11 голосов
/ 03 мая 2009

Я нашел ответ. Благодаря "Поваренной книге IronPython". Больше информации на эту тему можно найти там: http://www.ironpython.info/index.php/Launching_Sub-Processes

>>> from System.Diagnostics import Process
>>> p = Process()
>>> p.StartInfo.UseShellExecute = False
>>> p.StartInfo.RedirectStandardOutput = True
>>> p.StartInfo.FileName = 'uname'
>>> p.StartInfo.Arguments = '-m -r'
>>> p.Start()
True
>>> p.WaitForExit()
>>> p.StandardOutput.ReadToEnd()
'9.6.0 i386\n'
>>> p.ExitCode
0
>>> 
1 голос
/ 01 мая 2009

Вы можете использовать большинство стандартных модулей os из Ironpython.

import sys
sys.path.append path('...pathtocpythonlib......')
import os
0 голосов
/ 15 июня 2010

Здесь есть частичная реализация модуля подпроцесса:

http://www.bitbucket.org/jdhardy/code/src/tip/subprocess.py

Модуль (в настоящее время, июнь 2010 г.) поддерживает только перенаправление каналов STDIO (например, вы не можете предоставить свои собственные файловые объекты для заполнения выводом или для потоковой передачи ввода), но для этого достаточно основ на.

0 голосов
/ 13 мая 2009

Учтите это C # Interactive Shell тоже .... не уверен, поддерживает ли он IronPhython в оболочке, но Mono делает, как вы знаете.

...