打印语句出现“Invalid Syntax”错误

3

这似乎有点奇怪。我在批处理作业中运行Python脚本时使用了一些打印语句。

问题出在打印语句上,我已经尝试了各种可能的方法,但仍然会抛出无效语法错误。

print STDERR 'Kapil >> BEFORE INSERT';
print STDERR 'Kapil tag_id >> $tag_id';
print STDERR 'Kapil Hostname >> $hostname';

我必须将 STDERR 输出到作业输出文件才能打印语句。否则,什么也不会打印。

  File "/d/home/aprun-prologue/aprun-prologue", line 169
    print STDERR 'Kapil >> BEFORE INSERT \n';
                                           ^
SyntaxError: invalid syntax

谢谢,Kapil

5
看起来你把 Perl 代码复制过来,然后期望它可以在 Python 中运行。 - SethMMorton
1个回答

5
import sys

print >>sys.stderr, 'Kapil >> BEFORE INSERT'
print >>sys.stderr, 'Kapil tag_id >> $tag_id'
print >>sys.stderr, 'Kapil Hostname >> $hostname'

尝试了这个,但是我的输出文件里仍然没有显示任何内容。 - kay
我们不确定 OP 是否在使用 Python2 还是 Python3,因此这对于他们在 Python3 上不起作用。如果是 Python3,则需要 print('Kapil >> BEFORE INSERT', file=sys.stderr) - SethMMorton
此外,假设他们确实复制了Perl代码并期望它能正常工作,那么他们可能需要将变量放入字符串中,因此他们应该执行'Kapil tag_id >> {}'.format(tag_id)'以获得完全相同的结果。 - SethMMorton
1
@user2907995 除非您在调用此脚本时将stderr重定向到文件,否则此输出将打印到屏幕而不是文件(stderr不是文件)。 - SethMMorton
我正在将stderr导向文件。作业的流程是,首先调用一个perl脚本,该脚本再调用一个python脚本。无论我在perl脚本中给出的打印语句(STDERR)都会显示在stderr文件中,但python脚本中的打印语句却没有。顺便说一下,安装的是Python 2.6而不是3.0(我也检查过了@Seth)。 - kay
你的Perl脚本是否捕获了Python脚本的输出? - SethMMorton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接