如何在Perl中获取Python脚本的函数返回值(无需套接字或文件)
解决方案
要实现Perl获取Python脚本返回的123,且不使用套接字或文件,是可行的,但需要先调整Python脚本的输出逻辑,再通过Perl捕获标准输出:
步骤1:修改Python脚本(run_me.py)
原脚本的main()返回123,但没有将这个值输出到标准输出,所以Perl无法捕获。需要让Python把返回值打印出来:
# run_me.py def main(): return 123 if __name__ == '__main__': # 将main的返回值打印到标准输出 print(main())
步骤2:Perl脚本捕获输出
使用Perl的反引号(`)或qx//操作符执行Python脚本并捕获其标准输出,再去除末尾的换行符:
# perl code my $ret = `python run_me.py`; # 若你的环境默认是python3,替换为`python3 run_me.py` chomp $ret; # 移除输出末尾的换行符 print "ret = $ret\n"; # 输出:ret = 123
补充说明
- 若尝试用退出码传递值:可以修改Python脚本用
sys.exit(main()),但退出码的范围是0-255,超过这个范围的值会被截断(比如返回300的话,实际退出码是300%256=44),仅适合小数值场景,且退出码通常用于表示脚本执行状态(成功/失败),不是传递业务数据的常规方式。 - 若不能修改Python脚本:则无法获取到123,因为原脚本既没有输出到标准输出,也没有将该值作为退出码返回(原脚本退出码为0,代表执行成功)。
内容的提问来源于stack exchange,提问作者urie
相关产品推荐
相关产品推荐

