当前位置: 首页 > 面试题库 >

Python脚本在打印之前打印os.system的输出

谢洛城
2023-03-14
问题内容

我有一个python脚本test.py:

print "first"
import os
os.system("echo second")

在linux命令行上执行

python test.py

返回:

first
second

然后执行

python test.py > test.out; cat test.out

哪个返回

second
first

如何重定向输出使os.system调用在print语句之前打印?


问题答案:

当您输出到管道时,Python缓冲写入的sys.stdout输出,并在刷新,溢出,关闭后(程序退出时)输出。虽然它将缓冲打印调用,但系统调用输出将直接输出到stdout中,并且其输出将不会被缓冲。这就是为什么您会看到这样的优先级。为了避免这种情况,请使用python -u

python -u test.py > test.out; cat test.out

编辑 :有关何时将刷新缓冲区的说明。



 类似资料:
  • 问题内容: 我无法弄清楚在脚本开始时该做什么,例如在此Scikit示例中。 我一直在Google中寻找 Python文档字符串, 在功能中提供一些文档似乎很有用。但是我看不到脚本中间有什么作用。 问题答案: 在功能中提供一些文档似乎很有用 这是真的。除功能外,文档也可以在模块中提供。因此,如果您有一个像这样的文件: 您可以像这样访问其文档字符串: 现在,回到您的问题:做什么?简而言之:它输出模块文

  • 问题内容: 输出: 现在,如果我将删除parent中的sleep(5),则输出: 最后,我尝试使用0作为waitpid而不是WNOHANG的第三个参数,然后在下面的输出中显示了所有child的打印内容: 有人可以帮助我理解执行execl之后和执行之前的行为吗? 问题答案: 请记住,通过(至)的输出通常是 行缓冲的 。这意味着输出缓冲区将在换行符上刷新。由于您要打印的字符串后没有换行符,因此不会清除

  • 问题内容: 在Python中,是否可以通过控制台中的input()请求用户输入,同时在提示之前的行中打印出文本?它看起来应该像这样: 每当打印新文本时,都应在前一个文本之后和input()提示符之前打印它。而且,它不应打扰用户输入文本。 因此,在打印“文本4”之后,控制台应如下所示: 在不使用任何外部库的情况下用Python可以做到吗? 我已经尝试使用\ r,\ b和类似的代码以及线程。我也知道我

  • 问题内容: 打印列表中元素之前的“ u”?我没有在代码中键入u。 当我运行此命令时,它将打印列表,但其格式如下: 那些“ u”来自列表中每个元素的位置? 问题答案: 我认为您实际上对此感到惊讶的是,打印单个字符串与打印字符串列表的功能不同–无论是否为Unicode,这都是事实: 即使没有,您也有多余的引号,更不用说反斜杠转义了。而且,如果您使用字节字符串而不是字符串尝试相同的操作,那么您仍然会使用

  • 4.12. 打印输出 前面例子中涉及到的打印都比较简单。在这一节中,我们将要讨论Go语言格式化输出的功能。 我们已经用过"fmt"包中的"Printf"和"Fprintf"等输出函数。"fmt"包中的"Printf"函数的 完整说明如下: Printf(format string, v ...) (n int, errno os.Error) 其中"..."表示数目可变参数,

  • 我有一个flask应用程序,只有一条路线,没有复杂的事情发生,运行在docker容器中。我一辈子都不能让print语句出现在日志中(