Как запускать команды оболочки операционной системы в IronPython / Mono?

StackOverflow https://stackoverflow.com/questions/810521

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Я нашел ответ.Спасибо "Кулинарной книге 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
>>> 

Другие советы

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

import sys
sys.path.append path('...pathtocpythonlib......')
import os

Подумайте об этом Интерактивная оболочка C # тоже .... не уверен, поддерживает ли он IronPhython в оболочке, но Mono делает это, как вы знаете.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top