Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不干扰append(>;)的情况下将状态栏输出到控制台?_Python_Progress Bar_Stdout - Fatal编程技术网

Python 如何在不干扰append(>;)的情况下将状态栏输出到控制台?

Python 如何在不干扰append(>;)的情况下将状态栏输出到控制台?,python,progress-bar,stdout,Python,Progress Bar,Stdout,我有一个脚本,它只是将json格式的日志事件逐行输出到屏幕上。一行等于一个json日志事件。我通常只是简单地将结果附加到一个文件中,以便在需要时保存它们(./script.py>>json.logs) 这个脚本可能需要一段时间,这取决于输入,我想在运行时在控制台底部添加一个简单的进度条或编号。然而,我认为如果我像普通的那样追加,这也会写入日志文件,我不希望这样 向控制台打印不会附加到stdout或>>的内容的正常方法是什么?此外,如果我只是简单地将结果打印到屏幕上,而不是将其记录到文件中,那么我

我有一个脚本,它只是将json格式的日志事件逐行输出到屏幕上。一行等于一个json日志事件。我通常只是简单地将结果附加到一个文件中,以便在需要时保存它们(./script.py>>json.logs)

这个脚本可能需要一段时间,这取决于输入,我想在运行时在控制台底部添加一个简单的进度条或编号。然而,我认为如果我像普通的那样追加,这也会写入日志文件,我不希望这样


向控制台打印不会附加到stdout或>>的内容的正常方法是什么?此外,如果我只是简单地将结果打印到屏幕上,而不是将其记录到文件中,那么我需要状态栏也不要在屏幕上造成混乱(或者更确切地说,只在控制台屏幕的底部显示)。

使用
>
默认情况下只将STDOUT传输到文件,因此如果打印到STDERR,它不会进入日志。例如:

import sys
print("something") # this will go to json.logs
print("something else", file=sys.stderr) # this won't go to json.logs unless you specifically tell it to

至于制作条形图本身,请查看类似的内容,或者如果您特别希望条形图显示在窗口底部,您可能需要使用自己的解决方案。或者只做一些简单的事情,比如一次打印一个星号。

使用
默认情况下只将STDOUT管道传输到文件,因此如果打印到STDERR,它将不会进入日志。例如:

import sys
print("something") # this will go to json.logs
print("something else", file=sys.stderr) # this won't go to json.logs unless you specifically tell it to

至于制作条形图本身,请查看类似的内容,或者如果您特别希望条形图显示在窗口底部,您可能需要使用自己的解决方案。或者只做一些简单的事情,比如一次打印一个星号。

想法是使用stderr(
import sys;sys.stderr.write('The bar')
如果您使用的是python3,您可以使用
print('bar stuff',file=sys.stderr)
)。如果您想在屏幕上显示条的同时将标准输出保存在文件中,那么这种方法很有效。将条始终放在屏幕底部看起来相当复杂:您应该知道屏幕的高度,我认为,这在python中几乎是不可能的


也许,通过一些魔法,您可以使用重写旧字符串的命令来打印屏幕开始处的条形图和屏幕下方的给定行数。

想法是使用stderr(
import sys;sys.stderr.write('the bar'))
您可以使用
print('barstuff',file=sys.stderr)
如果您使用的是python3)。如果您想在屏幕上显示条的同时将标准输出保存在文件中,那么这种方法很有效。将条始终放在屏幕底部看起来相当复杂:您应该知道屏幕的高度,我认为,这在python中几乎是不可能的


也许,通过一些魔术,您可以使用“重写旧字符串”来打印屏幕开始处的条形图和屏幕下方的给定行数。

看看TQM库,它可能适合您。看看TQM库,它可能适合您。谢谢。所以我假设使用它是安全的,只要我不需要对错误使用STDERR?这是正确的。如果您确实需要这样做,那么您可能需要重写Python脚本,只需自己进行日志记录。您可以执行类似于
f=open(“json.log”,“wt”)
,然后执行
print(“something”,file=f)
,或者使用一个更强大的可用日志记录模块。要使条形图保持在底部,您需要使用
tqdm.write()
,或者使用您自己的基于诅咒的解决方案来编写所有消息。谢谢。所以我假设使用它是安全的,只要我不需要对错误使用STDERR?这是正确的。如果您确实需要这样做,那么您可能需要重写Python脚本,只需自己进行日志记录。您可以执行类似于
f=open(“json.log”,“wt”)
,然后执行
print(“something”,file=f)
,或者使用一个更强大的可用日志记录模块。要使条形图保持在底部,您需要使用
tqdm.write()
,或者使用您自己的基于诅咒的解决方案来编写所有消息。谢谢。我至少可以从这个开始。我在上面也问过这个问题:使用这个解决方案应该是安全的,只要我不需要为真正的错误使用STDERR,对吧?是的!如果要跟踪错误,可以使用其他文件作为日志。谢谢。我至少可以从这个开始。我在上面也问过这个问题:使用这个解决方案应该是安全的,只要我不需要为真正的错误使用STDERR,对吧?是的!如果要跟踪错误,可以使用其他文件作为日志。