包装 python os.system 方法
wrap python os.system method
我有以下用于在 perl 脚本中包装 CORE::system 的 perl 模块:
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__
我正试图在 python 中实现同样的目标。我不知道如何使用装饰器将 here 描述的语法扩展到这个 os 方法。
我希望对包装方法的调用与未包装的方法完全相同。
即status = os.system("mycmd" + " myarg")
你可以只用猴子补丁 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
我有以下用于在 perl 脚本中包装 CORE::system 的 perl 模块:
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__
我正试图在 python 中实现同样的目标。我不知道如何使用装饰器将 here 描述的语法扩展到这个 os 方法。
我希望对包装方法的调用与未包装的方法完全相同。
即status = os.system("mycmd" + " myarg")
你可以只用猴子补丁 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