Запустите команду оболочки с в сценарии Python, ожидайте завершения и возвратитесь к сценарию

Я нашел этот код в компоненте Microsoft.AspNet.Identity.Core, и он работает.

private static readonly TaskFactory _myTaskFactory = new 
     TaskFactory(CancellationToken.None, TaskCreationOptions.None, 
     TaskContinuationOptions.None, TaskScheduler.Default);

// Microsoft.AspNet.Identity.AsyncHelper
public static TResult RunSync<TResult>(Func<Task<TResult>> func)
{
    CultureInfo cultureUi = CultureInfo.CurrentUICulture;
    CultureInfo culture = CultureInfo.CurrentCulture;
    return AsyncHelper._myTaskFactory.StartNew<Task<TResult>>(delegate
    {
        Thread.CurrentThread.CurrentCulture = culture;
        Thread.CurrentThread.CurrentUICulture = cultureUi;
        return func();
    }).Unwrap<TResult>().GetAwaiter().GetResult();
}
57
задан Harley Holcombe 28 November 2008 в 11:35
поделиться

4 ответа

подпроцесс: subprocess модуль позволяет Вам порождать новые процессы, соединяться с их входными/выводами/ошибками каналами и получать их коды возврата.

http://docs.python.org/library/subprocess.html

Использование:

import subprocess
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
process.wait()
print process.returncode
92
ответ дан Serge 7 November 2019 в 15:46
поделиться

os.exec*() функции замена текущая программа с новой. Когда эта программа концы так делает Ваш процесс. Вы, вероятно, хотите os.system().

7
ответ дан 7 November 2019 в 15:46
поделиться

Можно использовать subprocess.Popen . Существует несколько способов сделать это:

import subprocess
cmd = ['/run/myscript', '--arg', 'value']
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in p.stdout:
    print line
p.wait()
print p.returncode

Или, если Вы не заботитесь о том, что на самом деле делает внешняя программа:

cmd = ['/run/myscript', '--arg', 'value']
subprocess.Popen(cmd).wait()
60
ответ дан Harley Holcombe 7 November 2019 в 15:46
поделиться

используйте икру

import os
os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')
3
ответ дан M. Utku ALTINKAYA 7 November 2019 в 15:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: