簡體   English   中英

在perl中運行python腳本

[英]Run a python script in perl

我有兩個腳本,一個python腳本和一個perl腳本。

如何使perl腳本運行python腳本然后自行運行?

這樣的事情應該有效:

system("python", "/my/script.py") == 0 or die "Python script returned error $?";

如果需要捕獲Python腳本的輸出:

open(my $py, "|-", "python2 /my/script.py") or die "Cannot run Python script: $!";
while (<$py>) {
  # do something with the input
}
close($py);

如果要為子進程提供輸入,這也可以類似地工作。

最好的方法是使用IPC :: Open3在系統級執行python腳本。 與使用system()相比,這將使代碼更安全,更易讀;

您可以使用IPC :: Open3輕松執行系統命令,讀取和寫入,如下所示:

use strict;
use IPC::Open3 ();
use IO::Handle ();  #not required but good for portabilty

my $write_handle = IO::Handle->new();
my $read_handle = IO::Handle->new();
my $pid = IPC::Open3::open3($write_handle, $read_handle, '>&STDERR', $python_binary. ' ' . $python_file_path);
if(!$pid){ function_that_records_errors("Error"); }
#read multi-line data from process:
local $/;
my $read_data = readline($read_handle);
#write to python process
print $write_handle 'Something to write to python process';
waitpid($pid, 0);  #wait for child process to close before continuing

這將創建一個運行python代碼的分叉進程。 這意味着如果python代碼失敗,您可以恢復並繼續您的程序。

如果你需要將結果從一個程序傳遞給另一個程序,那么從shell腳本運行這兩個腳本並使用管道(假設你在Unix環境中)可能更簡單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM