Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.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 os.sys.stdin.buffer.read失败_Python_Windows_Python 3.3 - Fatal编程技术网

如果给定缓冲区长度,则python os.sys.stdin.buffer.read失败

如果给定缓冲区长度,则python os.sys.stdin.buffer.read失败,python,windows,python-3.3,Python,Windows,Python 3.3,失败于 import os s = os.sys.stdin.buffer.read(1024*32) 如果运行pythont1.py,那么进程将被阻塞并按预期等待输入。 为什么python3.3有1024*32-1缓冲区长度限制?是系统不同,还是所有系统都相同?我们如何才能消除这一限制 顺便说一句:我使用windows 7 python 32位版本3.3,我们从查看os模块的源代码开始,其中第26行读取 导入系统,错误号 这告诉我们,os.sys只是对标准sys模块的引用。 然后我们转到sy

失败于

import os
s = os.sys.stdin.buffer.read(1024*32)
如果运行pythont1.py,那么进程将被阻塞并按预期等待输入。 为什么python3.3有1024*32-1缓冲区长度限制?是系统不同,还是所有系统都相同?我们如何才能消除这一限制


顺便说一句:我使用windows 7 python 32位版本3.3,我们从查看
os
模块的源代码开始,其中第26行读取
导入系统,错误号

这告诉我们,
os.sys
只是对标准
sys
模块的引用。
然后我们转到
sys
模块的第二行,在第1593行中,我们找到了以下注释(感谢有人把它放在那里……)
/*stdin/stdout/stderr现在由pythonrun.c*/

然后我们转到
pythonrun.c
,在第1086行我们遇到了以下代码:
std=create_stdio(iomod,fd,0,”,编码,错误)
这在第1091行:
PySys\u SetObject(“stdin”,std)
然后我们查找在第910行中找到的
createstdio()
函数的定义。我们在第999行查找此函数的返回值,如下所示:
返回流
现在我们必须找出
流是什么。它是在第984行中调用的函数
\u PyObject\u CallMethodId()
的返回值


我希望你能看到流程-试着从这里开始。

在64位Linux上看不到任何错误,直到我将其增加到
1024**3*6
,然后我得到一个
MemoryError
。我的Win7+Python3.3.0-32位也有同样的问题。但是如果我在Cygwin Python 2.7.3中运行该脚本,它将运行得非常完美。升级到3.3.1没有帮助。我尝试过32位Python 3.3.0、3.3.1、2.7.4和64位3.31,但都有相同的问题。这似乎是Windows端口特定的问题。您可以尝试在Python邮件列表中问这个问题。
D:\Projects\pytools>python t1.py
Traceback (most recent call last):
  File "t1.py", line 2, in <module>
    s = os.sys.stdin.buffer.read(1024*32)
OSError: [Errno 12] Not enough space
import os
s = os.sys.stdin.buffer.read(1024*32-1)