2015-01-12 2 views
0

У меня есть следующий PERL модуль для упаковки CORE :: системы в PERL скриптов:обертка метод питон os.system

package system_wrapper; 

sub check_system { 
    my ($cmd) = @_; 

    my $err = CORE::system($cmd); 
    if ($err != 0) { 
     print "Error occured when executing: $cmd. Exiting.\n"; 
     exit(-1); 
    } 
} 
*CORE::GLOBAL::system = \&check_system; 

1; 
__END__ 

Я пытающегося для того чтобы достигнуть то же самое в питона. Я не могу решить, как расширить синтаксис, описанный here, используя декораторы для этого os-метода.

Я бы хотел, чтобы призывы к обернутому методу были точно такими же, как развернутый.

т.е. status = os.system("mycmd" + " myarg")

+0

я пропустил что-то из этой оболочки. 'check_system' должен возвращать' $ err' – ldgorman

ответ

1

Вы можете просто обезьяна патч os.system. Переименуйте реальный os.system к чему-то еще, затем создать функцию, используя его и назначить его os.system:

def my_os_system(cmd): 
    err = os._system(cmd) 
    if err != 0: 
     print "Error occured when executing: %s. Exiting." % cmd 
     sys.exit(-1) 

os._system = os.system 
os.system = my_os_system