我需要将我的 Perl 日志处理脚本移植到 Python。这是我可以使用的 Perl 脚本的简单示例:
#!/usr/local/bin/perl
$|=1; # Use unbuffered output
while(<>) {
system("beep");
}
正如您可能看到的,我告诉系统在请求测试脚本时发出哔哔声。在这个上一切正常,但是当我尝试这样的 Python 脚本时:
import sys
import os
for line in sys.stdin:
os.system('beep')
一切都运行,但系统在请求后不会发出哔哔声。以下是我在 apache 配置文件中使用和使用的行:
CustomLog "|perl /var/web/onhit.pl" "onhit" <-OLD LINE
CustomLog "|python /var/web/onhit.py" "onhit" <-NEW LINE
我在 Python 邮件列表上关注这封电子邮件。任何人都知道为什么这不起作用?
编辑:我知道问题与“for line in sys.stdin”有关。出于某种原因,它只是没有检测到标准输入中的任何内容。不过,我不知道是我的 python 脚本还是我的 apache 配置导致了这种情况。
你从哪里得到哔哔声?您是否尝试过输入此beep命令的完整路径?
编辑添加代码示例。
上次我在 python 中破解了一些东西以将 stdin 作为管道读取,我的代码看起来像这样。
唾手可得的果实:路径、权限、所有权。