相关疑难解决方法(0)

如何刷新打印功能的输出?

如何强制Python的打印功能输出到屏幕?

这不是禁用输出缓冲的重复- 链接的问题是尝试无缓冲输出,而这是更一般的.这个问题的最佳答案太强大或涉及到这个问题(他们不是很好的答案),这个问题可以在谷歌上找到一个相对新手.

python printing flush python-3.x

1111
推荐指数
13
解决办法
72万
查看次数

禁用输出缓冲

Python的解释器默认启用输出缓冲sys.stdout吗?

如果答案是肯定的,那么禁用它的所有方法是什么?

建议到目前为止:

  1. 使用-u命令行开关
  2. 包装sys.stdout在每次写入后刷新的对象
  3. 设置PYTHONUNBUFFEREDenv var
  4. sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

是否有任何其他方式来设置一些全局标志sys/ sys.stdout程序执行过程中?

python stdout buffered

487
推荐指数
10
解决办法
25万
查看次数

如何使用shebang(即#!)为awk使用多个参数?

我想用shebang 执行一个gawk脚本--re-interval."幼稚"的方法

#!/usr/bin/gawk --re-interval -f
... awk script goes here
Run Code Online (Sandbox Code Playgroud)

不起作用,因为gawk是用第一个参数调用的"--re-interval -f"(不是在空白处分开),它不明白.有解决方法吗?

当然你可以不直接调用gawk,而是将它包装成一个分割第一个参数的shell脚本,或者创建一个shell脚本,然后调用gawk并将脚本放到另一个文件中,但我想知道是否有某种方法可以做这在一个文件中.

shebang行的行为因系统而异 - 至少在Cygwin中它不会通过空格分割参数.我只关心如何在一个行为类似的系统上做到这一点; 该脚本不是便携式的.

unix shell awk shebang gawk

114
推荐指数
5
解决办法
3万
查看次数

无法使用"#!/ usr/bin/env python"将参数传递给python

我需要一个可直接执行的python脚本,所以我用它启动了该文件#!/usr/bin/env python.但是,我也需要无缓冲输出,所以我试过#!/usr/bin/env python -u,但是失败了python -u: no such file or directory.

我发现#/usr/bin/python -u的作品,但我需要它来获得pythonPATH支持虚拟env环境.

我有什么选择?

python arguments shebang

65
推荐指数
7
解决办法
2万
查看次数

Why does this snippet with a shebang #!/bin/sh and exec python inside 4 single quotes work?

I'm trying to understand one of the answers to this question:

Cannot pass an argument to python with "#!/usr/bin/env python"

#!/bin/sh
''''exec python -u -- "$0" ${1+"$@"} # '''
Run Code Online (Sandbox Code Playgroud)

This works well, but I do not understand why it works with four ticks at the beginning of that line rather than three.

In addition, why the hash near the end of that string?

python bash arguments shebang sh

15
推荐指数
1
解决办法
2878
查看次数

如何在python中编写unix过滤器?

我想编写一个读取stdin(无缓冲)的程序,并编写stdout(unbuffered)进行一些简单的char-by-char转换.为了举例说明,我想要x从stdin中删除所有字符.

python unix filter

12
推荐指数
4
解决办法
4430
查看次数

Python的打印函数在调用时刷新缓冲区?

可能重复:
如何刷新Python打印输出?
python中的无缓冲的stdout(如在python -u中)来自程序内部

我有以下代码来刷新输出缓冲区.

print 'return 1'
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

我可以设置打印功能,以便在调用时自动刷新缓冲区吗?

python flush

9
推荐指数
1
解决办法
7475
查看次数

Django管理命令中的动态单行输出

我有一个执行大量处理的Django管理命令,因此我将其进度输出为一个百分比。我想使用此处此处答案中所述的技术。我从Django文档中知道,在管理命令中使用Django时sys.stdout需要将其替换self.stdout,但是我仍然没有运气。它是python 2.7,所以我不能将endkwarg设置为print。这是我尝试过handle的Command对象之一:

i = 0
for thing in query:
    self.stdout.write("\r%%%s" % (100 * float(i) / float(query.count()))
    i += 1
Run Code Online (Sandbox Code Playgroud)

我已经尝试过在回答类似问题时描述的其他几种技术,包括使用ANSI转义序列。Django管理命令打印输出的方式有什么特别之处吗?如何获得想要的效果?

python printing django

6
推荐指数
1
解决办法
1585
查看次数

Python脚本输出到控制台,即使它在后台运行

我在后台运行python脚本,但为什么它仍然打印到控制台,即使用管道传输到文件?

我尝试了以下命令:

python script.py &
python script.py > output.txt &
Run Code Online (Sandbox Code Playgroud)

我尝试了一个简单的脚本:

print "hello world"
Run Code Online (Sandbox Code Playgroud)

python script.py &
Run Code Online (Sandbox Code Playgroud)

它仍然打印到控制台.

python script.py > output.txt &
Run Code Online (Sandbox Code Playgroud)

按预期工作,不打印到控制台.

linux background pipe

5
推荐指数
1
解决办法
8374
查看次数

强制使用 buildout 和 zc.recipe.egg:scripts 制作的脚本进行无缓冲输出

我需要在使用构建构建的脚本中使用无缓冲的输出。

-u我的方法是在生成的脚本中指定Python 的标志。

这是我的 buildout.cfg:

[buildout]
parts = python
develop = .

[python]
recipe = zc.recipe.egg:scripts
eggs = myproject
Run Code Online (Sandbox Code Playgroud)

和setup.py:

[buildout]
parts = python
develop = .

[python]
recipe = zc.recipe.egg:scripts
eggs = myproject
Run Code Online (Sandbox Code Playgroud)

我得到以下配置的 shebang:

from setuptools import setup, find_packages

setup(
    name = 'myproject',
    packages = find_packages(),
    entry_points = """
    [console_scripts]
    myscript = myproject:main
    """,
)
Run Code Online (Sandbox Code Playgroud)

我想要这个:

$ pip install .
$ head -n1 /usr/local/bin/myscript
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

怎么做?我尝试添加arguments = -uinterpreter = python -ubuildout.cfg. …

python setuptools buildout

5
推荐指数
1
解决办法
1496
查看次数

在python 3.x(使用wxPython GUI)日志中启用未缓冲的输出

我有一个一直在使用的Py3.x GUI应用程序Gooey。该应用程序功能齐全,并且GUI可以按预期工作,但内置控制台/终端接收缓冲的输出除外。

如果我使用来运行.py文件,这不是问题pythonw -u script.py,但是我现在尝试将工具捆绑/冻结到中.app。捆绑过程一直有效,但是在打开应用程序时仍然存在缓冲输出的问题。

到目前为止,我发现了以下内容,但没有尝试过:

  • 一些线程建议在每次调用时使用flush=Truewith print()进行写操作,但是logging-我在这里感兴趣的是-没有这样的互补标志。因此,该线程中的各种猴子修补解决方案对我也没有用(需要注意的是,我对logging井的内部结构并不了解,因此也许对记录器Gooey本身也可以应用类似的方法,并且打包过程输出的日志记录信息比我自己的调用要多得多,并且仍在缓冲中,因此看来“全局取消缓冲”才是真正需要的。

  • 该线程提供了许多方法。确实,建议sys.stdout使用0缓冲区大小的重新打开方法,但是在第一个线程中,根据PIP 3116以及在我看来,使用PIP 3116,它是否仍然可以在Python 3上使用还存在争议。

    nonbuffered_stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
    sys.stdout = nonbuffered_stdout
    
    Run Code Online (Sandbox Code Playgroud)

    似乎.app完全打破了。

  • 尝试将“ a” -uPYTHONUNBUFFERED=1“ shebang ”“注入” ,无论是否带有,都似乎不起作用(在本例中为MacOS)-S


因此,TL; DR

当未显式调用脚本时,如何在Python 3.x中实现无缓冲输出python3 -u

我仍在尝试将MWE gooey组合在一起,但是结合使用打包过程会使这变得有些困难。

python wxpython output-buffering

5
推荐指数
0
解决办法
130
查看次数