Domanda

Vorrei provare IronPython e Mono. In particolare svolgere compiti di amministratore di sistema. Ciò significa spesso eseguire comandi del sistema operativo. In CPython uso il modulo di sottoprocesso per tali compiti. Ma in IronPython (v2.0.1, Mono 2.4, Linux) non esiste un modulo di sottoprocesso. Sembra che non ci sia nemmeno un modulo 'os'. Quindi non posso usare os.system (). Quale sarebbe il modo IronPython di svolgere attività che normalmente useresti 'subprocess' o 'os.system ()' per in CPython?

È stato utile?

Soluzione

Ho trovato una risposta. Grazie al "Libro di cucina IronPython". Qui puoi trovare maggiori informazioni su questo argomento: 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
>>> 

Altri suggerimenti

Puoi usare la maggior parte dei moduli OS standard da Ironpython.

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

Considera anche questo C # Interactive Shell ... no certo se supporta IronPhython nella shell, ma Mono fa come sai.

Esiste un'implementazione parziale del modulo di sottoprocesso qui:

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

Il modulo (in questo momento, giugno 2010) supporta solo il reindirizzamento di pipe STDIO (come in, non è possibile fornire oggetti simili a file da riempire con output o per eseguire lo streaming di input), ma le basi sono sufficienti per ottenere by.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top