gpt4 book ai didi

python - 为什么我不能将 sys.stdin 中的所有数据写入 Windows 中的文件?

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

我正在尝试在 Windows XP 上使用 Python 2.7 从 sys.stdin 读取二进制数据。二进制数据是由 foobar2000 解码的 WAV 文件。通常,此数据被发送到命令行编码器,例如 stdin 上的 lame.exe,在那里它被处理并写入输出文件,其名称在命令行参数中提供。我试图拦截输出的 WAV 数据并将其发送到另一个文件。但是,在管道明显崩溃之前,我只能从 stdin 获得几 KB,因此我只剩下一个非常短(大约 75 KB)的 WAV 文件,而不是我期望的几十兆字节。这可能是什么原因造成的?我一直小心地将 sys.stdin 和输出文件作为二进制文件打开。

from __future__ import print_function
import os
import os.path
import sys

sys.stdin = os.fdopen(sys.stdin.fileno(), 'rb', 0) # Make sys.stdin binary

wave_fname = os.path.join(os.environ['USERPROFILE'], 'Desktop',
'foobar_test.wav')

try:
os.remove(wave_fname)
except Exception:
pass

CHUNKSIZE = 8192
wave_f = open(wave_fname, 'wb')
try:
bytes_read = sys.stdin.read(CHUNKSIZE)
while bytes_read:
for b in bytes_read:
wave_f.write(b)
bytes_read = sys.stdin.read(CHUNKSIZE)
finally:
pass
wave_f.close()

最佳答案

建议:也许你需要使用msvcrt.setmode(fd, flags) 其中fdsys.stdin.fileno()

关于python - 为什么我不能将 sys.stdin 中的所有数据写入 Windows 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3497879/

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