-6ren">
gpt4 book ai didi

python - 为什么打印的 Inline::Python 函数重定向失败?

转载 作者:行者123 更新时间:2023-12-04 04:28:42 26 4
gpt4 key购买 nike

这是我的问题的最简单的可重现性:

#!/usr/bin/env perl
use 5.16.3;
say "Got back ", test_print();
use Inline Python => <<'END_OF_PYTHON_CODE';
def test_print() -> int:
print("In the python test print")
return 32
END_OF_PYTHON_CODE
简单运行时:
$ perl small.pl
In the python test print
Got back 32
但是当重定向时:
$ perl small.pl | tee foo
Got back 32
$ cat foo
Got back 32
我可能做错了什么 Inline::Python代码无法打印到重定向输出?

最佳答案

Py_Finalize()不会调用以正确破坏 Python 解释器。
幸运的是,该模块将此函数公开为 py_finalize ,允许我们自己调用它。将以下内容添加到您的程序中:

END { Inline::Python::py_finalize(); }

演示:
use feature qw( say );

use Inline Python => <<'END_OF_PYTHON_CODE';

def test_print() -> int:
print("In the python test print")
return 32

END_OF_PYTHON_CODE

END { Inline::Python::py_finalize() if $ARGV[0]; }

say "Got back ", test_print();
$ perl a.pl 0
In the python test print
Got back 32

$ perl a.pl 0 | cat
Got back 32

$ perl a.pl 1
In the python test print
Got back 32

$ perl a.pl 1 | cat
In the python test print
Got back 32

关于python - 为什么打印的 Inline::Python 函数重定向失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68656428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com