我的代码基本上是这样的,在取出相关部分后:
import sys
print("error", "", "n", sys.stderr, False)
输出为:
error
<_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> False
为什么我得到第二行,我如何摆脱它?
您将获得第二行,因为print
打印您按顺序提供的内容列表。所以你要打印error
,然后什么都不打印,然后是换行符,然后是sys.stderr
——它有自己的字符串表示形式,即<_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>
,然后是False
。
来自REPL:
>>> import sys
>>> print("a", "b", "c")
a b c
>>> print(sys.stderr)
<_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>
鉴于此,您应该明确期望的输出是什么。假设您正在尝试打印到stderr
,在这种情况下,您需要使用'命名参数':
>>> print("a", "b", "c", sep=' +++ ', end='n', file=sys.stderr, flush=False)
a +++ b +++ c
请注意,因为print
的签名包含*objects
作为它的第一个参数,它将假设交给它的所有东西都是它正在打印的东西。如果需要设置sep
、end
、file
、flush
参数,必须命名。