python - 从 Perl 调用 Python 脚本
问题描述
我正在尝试在 perl 中捕获 python 退出代码形式。
我的python代码py_test.py:
import sys
sys.exit(sys.argv[1])
我的 perl 代码 test.pl:
#!/usr/bin/perl -w
$res = system("python py_test.py ".$ARGV[0]);
print("\$res ==== $res \n >>>". $? ."\n");
我跑了:
perl test.pl 4
结果是:
4
$res ==== 256
>>>256
我在 32 位 RHEL 5.3 上使用 python 2.4.3 和 perl 5.8.8。
有人可以帮我理解这里发生了什么,我似乎无法理解这种行为,我做错了什么吗?(我看了这个代码几个小时,我从来没有遇到过系统这么奇怪的东西)
解决方案
我发现了我的问题。我进入了 sys.exit argv[1],但在开始时,python 将其视为字符串。在我将其更改为 sys.exit(int(argv[1])) 后一切正常。
这也解释了为什么它打印“4”......
推荐阅读
- python - 尝试调用类时出现错误
- powershell - 使用不同的父文件夹 CSV 创建多个子文件夹 - Powershell
- vue.js - vue-test-utils 如何测试组件状态
- sql-server-2016 - SQL Server 不能添加、删除、添加列?
- math - 公式中的数学问题,寻找直接的数学函数
- javascript - 如何访问 onloadedmetadata 提供的对象?
- c++ - 对列表向量调用 clear() 会清除列表中每个索引处的所有节点吗?
- unity3d - 如何获得墙壁物理的正确 2D 弹跳球?而且它也适用于低fps?
- c# - LINQ 内部 WHERE - 内部集合不包含字符串
- java - 带有 RecyclerView 和 CardView 的 java.lang.NullPointerException