Wie OS-Shell-Befehle in Ironpython / Mono laufen?
-
03-07-2019 - |
Frage
Ich möchte Ironpython und Mono einen Versuch geben. Insbesondere Sysadmin Aufgaben. Was bedeutet oft mit OS-Befehle. In CPython verwende ich das Subprozess Modul für solche Aufgaben. Aber in Ironpython (v2.0.1, Mono 2.4, Linux) gibt es kein Subprozess-Modul. Es scheint, dass es nicht einmal ein ‚o‘ -Modul ist. So kann ich nicht verwenden os.system (). Was wäre der Weg Ironpython Aufgaben zu tun, die Sie normalerweise ‚subprocess‘ benutzen würde oder ‚os.system ()‘ für in CPython?
Lösung
Ich habe eine Antwort gefunden. Dank des „Ironpython-Kochbuch“. Man kann mehr Informationen zu diesem Thema findet dort: 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
>>>
Andere Tipps
Sie können von innen Iron die meisten der Standard-OS-Module verwenden.
import sys
sys.path.append path('...pathtocpythonlib......')
import os
Betrachten Sie diese C # Interactive Shell zu .... nicht sicher, ob es IronPhython in der Schale, aber Mono tut, wie Sie wissen, unterstützt.
Es ist ein Teil subprocess Modul Implementierung hier:
http://www.bitbucket.org/jdhardy/code /src/tip/subprocess.py
Das Modul (zu diesem Zeitpunkt, Juni 2010) wird unterstützt nur STDIO Rohre Umleitung (wie in, können Sie Ihre eigene Datei ähnliche Objekte nicht schaffen, mit Ausgang zu füllenden oder zu streamen intput), aber die Grundlagen sind genug, um durch.