0

(如果你反对将编程和幽默混为一谈,请直接跳到最后一段中的问题)

当 python 程序开始以 base64 编码打印其输出时,我们刚刚遇到了接近 x-files 的体验,而没有被要求这样做。实际上,它不是输出,而是它得到的标准输入的内容。事实上,该程序试图读取标准输入但得到一个空字符串,但标准输入被某些东西神秘地读取并传递给标准输出 base64 编码。

当我们达到这种完全困惑的状态时,有人注意到该目录包含另一个名为base64.py. 当我们删除它时,行为恢复正常。

我听说这是可能与某些textwrappython 功能有关的预期行为。我不会告诉你我对这样一个“功能”的看法,但我找不到任何关于它的参考,我很好奇。不是针对文本包装,而是针对未经询问就使用附近发现的程序的现象。

因此,如果有人愿意解释和/或提供一些参考资料,我将不胜感激。

(RHEL 5.7 上的 python 2.6)

编辑
我不能显示代码,因为真正的代码是专有的,我试图提出的一个例子没有显示这种行为。
问题真的是这样的:

在什么情况下,python 程序可以运行base64.py在同一目录中找到的另一个程序并将其标准输入传递给它?

EDIT2:
编辑主题以更好地反映上述解决方案
textwrap只是“红鲱鱼”

4

1 回答 1

3

base64标准库模块的名称。您提到还有另一个名为base64.py. 当您的程序的某些部分尝试导入标准模块(或另一个依赖于 的模块base64)时,该程序被执行。

另见第 6.1.2 节。教程中的模块搜索路径

包含正在运行的脚本的目录位于搜索路径的开头,位于标准库路径之前。这意味着将加载该目录中的脚本,而不是库目录中的同名模块。

于 2013-10-07T12:48:02.173 回答