我需要将我的 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”有关。出于某种原因,它只是没有检测到 stdin 中的任何内容。不过,我不知道是我的 python 脚本还是我的 apache 配置导致了这个问题。
答案1
你从哪里得到嘟来自?你试过输入这个的完整路径吗?嘟命令?
编辑以添加代码示例。
上次我在 Python 中对一些东西进行了修改,将 stdin 读取为管道,我的代码看起来像这样。
#!/usr/bin/python
import sys
while 1:
line = sys.stdin.readline()
if not line:
break
else:
print >> sys.stdout, 'got: %s' % line.strip()
sys.stdout.flush()
答案2
唾手可得的成果:路径、权限、所有权。