gpt4 book ai didi

python - 从文件重定向 stdin 时如何读取包含 ctrl-Z 的文件?

转载 作者:可可西里 更新时间:2023-11-01 09:24:34 25 4
gpt4 key购买 nike

我的 python 脚本中有这样一行:

data = sys.stdin.read()

然后我在 Windows 上运行带有文件重定向的脚本:

>> python test.py < binary_file

如果 binary_file 包含 \x1a (ctrl-Z) 在 Windows 中是 EOF,数据将只有 \x1a 之前的字符串。我知道这可以通过 open("...", "rb") 修复常规文件。

我将如何为 sys.stdin 处理这个问题?

最佳答案

我的下一步是尝试 fileinput module但我的直觉是 cmd.exe(或处理管道的代码)真正处理流,查找 \0x1a 字节并向您发送 EOF。

如果是这样,你也无能为力;操作系统根本不会让你读过这个字节。无法将 stdin“切换”到二进制模式,因为该句柄由运行时或操作系统打开,然后传递给 Python。

作为解决方法,您可以尝试安装 CygwinMSys它为您提供了一个真正的外壳(而不是 1980 年代产生的错误的模拟)。

或者尝试 PowerShell .如果幸运的话,他们没有在其中重新实现这个错误。

关于python - 从文件重定向 stdin 时如何读取包含 ctrl-Z 的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23007718/

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