Force unbuffered output for script made with buildout and zc.recipe.egg:scripts(强制使用Buildout和zc.Receipe.egg生成的脚本的无缓冲输出:脚本)
本文介绍了强制使用Buildout和zc.Receipe.egg生成的脚本的无缓冲输出:脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要在使用Buildout生成的脚本中使用无缓冲输出。
我的方法是在生成的脚本中为Python指定-u标志。
这是我的Buildout.cfg:
[buildout]
parts = python
develop = .
[python]
recipe = zc.recipe.egg:scripts
eggs = myproject
和setup.py:
from setuptools import setup, find_packages
setup(
name = 'myproject',
packages = find_packages(),
entry_points = """
[console_scripts]
myscript = myproject:main
""",
)
我使用此配置得到以下Shebang:
$ pip install .
$ head -n1 /usr/local/bin/myscript
#!/usr/bin/python
我想要这个:
#!/usr/bin/python -u
怎么做?我尝试将arguments = -u和interpreter = python -u添加到buildout.cfg。它没有起作用。
推荐答案
您可以通过在文件编号上打开新的文件对象来重新打开标准输入或标准输出,从而从您的PYTHON脚本中强制执行未缓冲的I/O:
import io, os, sys
try:
# Python 3, open as binary, then wrap in a TextIOWrapper
unbuffered = io.TextIOWrapper(open(sys.stdout.fileno(), 'wb', 0), write_through=True)
except TypeError:
# Python 2
unbuffered = os.fdopen(sys.stdout.fileno(), 'w', 0)
如果要使用使用标准输出或标准输入的其他模块或内置模块,则可以重新分配sys.stdout:
sys.stdout = unbuffered
另见unbuffered stdout in python (as in python -u) from within the program
这篇关于强制使用Buildout和zc.Receipe.egg生成的脚本的无缓冲输出:脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:强制使用Buildout和zc.Receipe.egg生成的脚本的无缓冲输出:脚本
基础教程推荐
猜你喜欢
- Kivy 使用 opencv.调整图像大小 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
