我正在创建一个 python 程序,它调用许多其他程序和脚本(在 Unix(SUNos) + Linux 上)。除了 1 个脚本之外,我在所有地方都使用子进程。
我不使用子进程的脚本是一个 perl 脚本,它已被制作成可执行文件。不知何故,它不允许我使用子进程,但它可以与(已弃用的)命令包一起使用。
我想了解为什么它不适用于子流程(换句话说:我做错了什么;-))
(实际的 perl 命令是什么并不重要,但它返回用户的全名和电子邮件作为结果)
我尝试过的:
PERL_CMD = [ '<executable perl-script>', '-rt', '"users"', '-eq', '"name"' '"<user_name>", '-fs', '":"', '-fld', '"fullname"', '"email"' ]
full_name, email = subprocess.check_output( PERL_CMD ).split(':')
但这是行不通的。
命令变体起作用的地方:
PERL_CMD = '<executable perl-script> -rt "users" -eq "name" "<user_name>" -fs ":" -fld "full_name" "email"'
full_name, email = commands.getoutput( PERL_CMD ).split(':')
有人知道为什么我无法让子流程工作吗?
令我烦恼的是,我可以让它适用于除此之外的所有事情(尽管我有一个可接受的(但已弃用的)解决方法)。