如何阻止 Python 的 Sys 模块的 "stdout" 和 "stderr" write 方法返回写入的字符数
How do I stop Python's Sys module's "stdout" and "stderr" write method from returning the numbers of characters written
每当我在 Python 的内置“sys
”模块中使用 stdout
或 stderr
对象的 write
方法时 Python 对于 Python 解释器,该方法还打印一个整数,表示字符串中的字符数,该字符串位于我作为 text
参数的参数提供的字符串之后 stdout
或 stderr
方法,这真的很令人沮丧,因为我只想要文本,而不是字符串长度。
例如:
>>> sys.stdout.write('string')
string6
我只想打印“'string'
”,而不是字符串长度 (6
)。
我试图通过使用 sys.stdout.write('string')[:-1]
来解决这个问题,我认为这也会删除字符串
之后放置的字符数
然后我发现我作为参数提供的字符串中的字符数出现了,因为我使用了解释器,并且解释器打印了函数返回但未打印的值。
所以我想做的是调用 sys.stdout.write('test')
但阻止它返回我作为 text
参数提供的字符串中的字符数。我该怎么做?
您不能阻止一个现成的函数在您调用它时执行它所执行的操作。你可以做的是通过对它做一些事情来阻止 Python 解释器打印返回值,例如。 G。将其分配给变量。
sys.stdout.write
还在方法调用中作为参数提供给 text
参数的字符串后打印整数,因为 stdout
的 write
方法object 也 returns text
参数参数的长度, Python REPL/Interpreter 也打印出返回值,这就是你的问题的答案。
因此,要阻止它打印出 text
字符串的长度,只需将 sys.stdout.write
方法调用分配给一个变量,因为它会调用该函数,然后您可以 del
执行后的变量,因为您不需要为 text
参数提供的字符串中返回的字符数。
此问题的另一种解决方案是在函数中调用 sdtout
对象的 write
方法,然后像这样调用该函数:
def show_text(txt):
from sys import stdout
stdout.write(txt)
return
show_text('Hello!)
每当我在 Python 的内置“sys
”模块中使用 stdout
或 stderr
对象的 write
方法时 Python 对于 Python 解释器,该方法还打印一个整数,表示字符串中的字符数,该字符串位于我作为 text
参数的参数提供的字符串之后 stdout
或 stderr
方法,这真的很令人沮丧,因为我只想要文本,而不是字符串长度。
例如:
>>> sys.stdout.write('string')
string6
我只想打印“'string'
”,而不是字符串长度 (6
)。
我试图通过使用 sys.stdout.write('string')[:-1]
来解决这个问题,我认为这也会删除字符串
然后我发现我作为参数提供的字符串中的字符数出现了,因为我使用了解释器,并且解释器打印了函数返回但未打印的值。
所以我想做的是调用 sys.stdout.write('test')
但阻止它返回我作为 text
参数提供的字符串中的字符数。我该怎么做?
您不能阻止一个现成的函数在您调用它时执行它所执行的操作。你可以做的是通过对它做一些事情来阻止 Python 解释器打印返回值,例如。 G。将其分配给变量。
sys.stdout.write
还在方法调用中作为参数提供给 text
参数的字符串后打印整数,因为 stdout
的 write
方法object 也 returns text
参数参数的长度, Python REPL/Interpreter 也打印出返回值,这就是你的问题的答案。
因此,要阻止它打印出 text
字符串的长度,只需将 sys.stdout.write
方法调用分配给一个变量,因为它会调用该函数,然后您可以 del
执行后的变量,因为您不需要为 text
参数提供的字符串中返回的字符数。
此问题的另一种解决方案是在函数中调用 sdtout
对象的 write
方法,然后像这样调用该函数:
def show_text(txt):
from sys import stdout
stdout.write(txt)
return
show_text('Hello!)