问题描述
我有以下两个用Python编写的程序
# cat.py
import sys
filename = sys.argv[1]
with open(filename,"rb") as f:
while c := f.read(1024 * 1024):
sys.stdout.buffer.write(c)
该程序读取文件并将其作为二进制文件输出到stdout。
以下程序旨在读取数据并将其打印为字节。
import sys
import io
if __name__ == '__main__':
print(sys.stdin.buffer.read(io.DEFAULT_BUFFER_SIZE))
但是在这种情况下我没有得到文件内容。如果我在Linux下运行此程序,则可以获取确切的内容,但是如果在Windows中运行,则不会:
python cat.py .\inputs\input.bin | python main.py
Windows上的输出(在pwsh.exe下运行):
0x3
0xc2
0xb7
0x55
0x12
0x20
0x66
0x67
0x50
0xc3
0x9e
0xc2
0xbd
0xd
0xa
在Linux上的输出(这是正确的):
0x3
0xfa
0x55
0x12
0x20
0x66
0x67
0x50
0xe8
0xab
有什么想法可能是这种情况吗?是换行符结尾还是类似的东西?
此外,在cat.py中,如果我写入文件而不是stdout,我的确将正确的内容写入文件。
更新:
好的,我将其范围缩小到一个powershell问题。如果我在cmd.exe中运行此程序,则不会有任何问题,但是,如果我在Powershell中运行它,则可以。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)