从perl运行python脚本,参数为stdin并保存stdout输出
我的perl脚本位于路径:从perl运行python脚本,参数为stdin并保存stdout输出,python,perl,Python,Perl,我的perl脚本位于路径: a/perl/perlScript.pl my $ret = `../python/pythonScript.py < hi`; The system cannot find the path specified. 我的python脚本位于路径: a/perl/perlScript.pl a/python/pythonScript.py my $ret = `../python/python
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
我的python脚本位于路径:
a/perl/perlScript.pl
a/python/pythonScript.py
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
pythonScript.py
从stdin获取一个参数,并将结果返回给stdout。从perlScript.pl
,我想用参数hi
运行pythonScript.py
到stdin,并将结果保存在某个变量中。这就是我尝试的:
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
您能解释找不到的路径吗?要启动外部脚本,您可以执行以下操作
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
system "python ../python/pythonScript.py hi";
然后在python脚本中
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
import sys
def yourFct(a, b):
...
if __name__== "__main__":
yourFct(sys.argv[1])
您可以获得有关python部分的更多信息,以启动您可以执行的外部脚本
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
system "python ../python/pythonScript.py hi";
然后在python脚本中
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
import sys
def yourFct(a, b):
...
if __name__== "__main__":
yourFct(sys.argv[1])
您可以获得有关python部分的更多信息您会遇到此错误,因为您使用的是shell重定向,而不仅仅是传递参数
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
../python/pythonScript.py < hi
它使用hi参数正确执行python脚本,并将结果返回到变量
$ret
您会遇到此错误,因为您使用的是shell重定向,而不仅仅是传递参数
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
../python/pythonScript.py < hi
它使用hi参数正确执行python脚本,并将结果返回到变量$ret
其他一些答案假设hi
必须作为命令行参数传递给python脚本,但asker说它来自stdin
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
因此:
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
其他一些答案假设hi
必须作为命令行参数传递给Python脚本,但询问者说它来自stdin
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
因此:
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
(backticks)启动一个shell(sh
),在该shell中,prog
语法名为input
,它将从中读取行并将它们馈送到程序prog
。但是您希望python脚本在其STDIN
上接收字符串hi
,而不是名为hi
的文件行
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
一种方法是直接这样做,my$ret=qx(echo“hi”| python_脚本)
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
但是我建议考虑使用这个模块。下面是一个简单的示例
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
如果脚本是可执行的,则程序
是脚本的路径,或者python script.py
。这将由系统运行
,因此一旦完成,将获得输出,这与问题中的尝试一致。有关模块的操作,请参阅文档
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
本模块旨在简单,同时“满足99%的使用系统
、qx
和open3[…]
的需要。有关更多的功能和控制,请参阅。(反勾号)启动外壳(sh
),其中的prog
语法名为input
,它将从中读取行并将它们馈送到程序prog
。但是您希望python脚本在其STDIN
上接收字符串hi
,而不是名为hi
的文件的行
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
一种方法是直接这样做,my$ret=qx(echo“hi”| python_脚本)
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
<>但是我建议考虑使用这个模块。下面是一个简单的例子:
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
程序
是脚本的路径,如果脚本是可执行的,或者可能是python script.py
。这将由系统运行
,因此一旦完成,将获得与问题中的尝试一致的输出。有关模块的操作,请参阅文档
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.
本模块旨在简单,同时“满足99%的使用系统
、qx
和open3[…]
的需求”。有关更多的电源和控制,请参阅
a/perl/perlScript.pl
my $ret = `../python/pythonScript.py < hi`;
The system cannot find the path specified.