关于bash:在python中,Perl的”print stderr”的等价物是什么?

What is the equivalent of Perl's 'print STDERR' in Python?

本问题已经有最佳答案,请猛点这里访问。

我正试图重写一个同事编写的Perl脚本,您可以将其作为目录的书签。

它的工作方式是在文件夹中键入go add dir,在终端中的任何其他地方键入go dir,然后转到书签目录。

据我所知,go是一个bash函数,它用以下代码调用perl脚本:cd (godir)。似乎要打印出除dir以外的任何内容,它将打印stderr。当我在python中使用sys.stderr.write()时,它会打印出文本,但也会打印出cd: The directory 'None' does not exist

这是一个编辑,因为我原来的问题不够具体。我发现了一个解决办法:无论python脚本返回什么,fish函数都将进行eval

1
eval (python go.py $argv)


在Python2中,您可以执行以下操作:

1
print >> sys.stderr,"""Text to print"""

对于python 3,语法是:

1
print("""Text to print""", file=sys.stderr)

当然,在这两种情况下,都需要import sys来导入sys模块。


这是在这里回答的

I found this to be the only one short + flexible + portable + readable:

from __future__ import print_function
...

def warning(*objs):
print("WARNING:", *objs, file=sys.stderr)