回答
像這樣的東西應該工作:
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);
,如果你想爲子進程提供輸入這也適用同樣。
好的答案,但你應該開始使用新的三個參數[open](http://perldoc.perl.org/functions/open.html)語法:'open(my $ py,「| - 」,「python2 /我的/ script.py「)或死亡......。你寫的東西沒什麼問題,但是新的語法會導致更少的問題。 – 2011-12-28 18:11:57
@DavidW:感謝您的提示,我承認我不是Perl程序員,很少使用它。我編輯以反映您的建議更改。 – 2011-12-28 19:20:29
您還應該使用'system'的多參數形式來避免shell和相關的插值問題:'system('python','/my/script.py')== 0 ...'會工作。 – friedo 2011-12-28 20:55:48
這可能是簡單的運行從shell腳本這兩個腳本,並使用管道(假設你在Unix環境中是)如果你需要從一個程序的結果傳遞給其他
最好方法是使用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代碼失敗,您可以恢復並繼續執行您的程序。
'my $ pid = ...'行忽略了'$(write | read)_handle的前面的聲明' – 2011-12-28 19:45:53
謝謝Eric。編輯修復雙重聲明。 – 2011-12-29 22:39:32
- 1. 從Perl腳本運行Python腳本
- 2. 運行Perl腳本
- 3. 使用python運行perl腳本
- 4. 在我的perl腳本中運行一個非perl腳本?
- 5. 如何在Perl腳本中運行Perl腳本?
- 6. 在powershell腳本中運行python腳本
- 7. 在Tomcat 7.0.70中運行Perl CGI腳本
- 8. 在perl腳本中運行awk命令
- 9. 未在Java中運行的Perl腳本
- 10. 在windows中使用python在Linux上運行遠程perl腳本
- 11. 如何從cron運行的Perl腳本中運行shell腳本?
- 12. Perl:在perl腳本中運行perl腳本的最快方法是什麼?
- 13. Cronjobs未運行perl腳本?
- 14. Perl腳本停止運行
- 15. 運行perl cgi腳本problec
- 16. 保持perl腳本運行
- 17. 命令在Ubuntu中運行Perl腳本中的Tcl(expect)腳本
- 18. 在Python中運行python腳本
- 19. 在python腳本中運行python代碼
- 20. 在Python環境中運行Python腳本?
- 21. 在包裝腳本中運行帶有參數的perl腳本
- 22. 運行Python腳本
- 23. 運行Python腳本
- 24. 運行python腳本
- 25. 在bash腳本中執行perl腳本
- 26. 在Android上運行Perl腳本
- 27. 在Windows上運行perl腳本
- 28. 在Ubuntu啓動時運行Perl腳本
- 29. 在特定時間運行perl腳本
- 30. 如何讓perl腳本運行另一個perl腳本?
對於簡單的'系統'調用,您是否面臨過於複雜的情況?另外,你的最後一句話似乎有一個錯誤。 Python腳本不會顯示在其中。 – 2011-12-28 17:37:23
我會強烈考慮將一個移植到另一個語言。 – 2011-12-28 19:26:25