gpt4 book ai didi

python - 预计无法传递超过 1024 个字符的输入?

转载 作者:太空狗 更新时间:2023-10-29 18:07:51 26 4
gpt4 key购买 nike

我目前正在使用以下代码将一些输入传递给预期的进程:

p = pexpect.spawn('cat', timeout=5.0 )
p.maxread = 5000
p.setecho(False) # prevent the process from echoing stdin back to us
INPUT_LEN = 1024
p.sendline('a'*INPUT_LEN)
print p.readline() # pexpect.TIMEOUT: Timeout exceeded in read_nonblocking().

当 INPUT_LEN < 1024 时,一切正常,但对于 >= 1024 个字符,进程没有收到完整的输入,导致在 p.readline() 上引发“pexpect.TIMEOUT”错误.

我试过将我的输入分成小于 1024 个字符的片段,但这有同样的问题:

p = pexpect.spawn('cat', timeout=5.0 )
p.maxread = 5000
p.setecho(False)
INPUT_LEN = 1024
p.send('a'*1000)
p.sendline('a'*(INPUT_LEN-1000))
print p.readline() # pexpect.TIMEOUT: Timeout exceeded in read_nonblocking().

有谁知道如何让 pexpect 处理超过 1024 个字符的输入?我试着查看源代码,但它似乎只是在调用 os.write(...)。

(作为旁注,我注意到当我从 shell 运行“cat”并尝试使用“Cmd+V”粘贴 >=1024 个字符时发生相同的截断错误。但是,如果我运行“pbpaste | cat”。)

谢谢!

更新:调用“os.write()”返回1025,表示写入成功,但os.read()返回“\x07”(单个字符BEL),然后在下次调用时挂起,导致超时。

将 os.write() 调用分成两个 1024 字节以下的 write(),通过调用 os.fsync() 分开,不会改变任何东西。

最佳答案

您的问题似乎与 MacOS 相关,请查看 MacOSX 10.6.7 cuts off stdin at 1024 chars .

它基本上说 1024 是您的 tty 缓冲区限制。

我不是 Mac OS 专家,但也许其他人可以为您提供更多相关信息。

关于python - 预计无法传递超过 1024 个字符的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9218499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com