我有一个代码可以在Linux中将stdin读取为二进制文件:
#! /usr/bin/python3
stdin_file = '/dev/stdin'
def read_input():
with open(stdin_file, mode='rb') as f:
while True:
inp = f.read(4)
if not inp: break
print('got :' , inp)
read_input()
对于Windows OS,它可以替代什么?
我不想使用sys.stdin.buffer.read()
考虑一下它,因为我必须像open(file_name)
答案 0 :(得分:2)
declare const str: string;
enqueue(str); // error, might be falsy
if (notEmptyString(str)) {
enqueue(str); // okay, str is NotEmptyString
}
,sys.stdin
和sys.stdout
都有一个sys.stderr
方法,该方法返回其文件描述符编号。 (0、1和2)
在python中,您可以将缓冲区的fileno()
用作fileno
的路径目标。
此外,就像@eryksun提到的那样,您可能希望在调用open
时传递closefd=False
,因此退出open
时不会关闭sys.stdin
的基础文件描述符
例如:
with
答案 1 :(得分:0)
一个不错的选择是使用流的 .buffer
成员来访问二进制版本:
stdin_buffer = sys.stdin.buffer
def read_input():
while True:
inp = stdin_buffer.read(4)
if not inp: break
print('got :' , inp)
我现在看到您在问题“我不想使用 sys.stdin.buffer.read()
”中写道,但仍然决定发布此答案,因为对于遇到此问题的许多其他人来说,这实际上是最好的解决方案,而且很容易错过在您的问题中对它的简短提及(这正是发生在我身上的事情!)。有什么理由不适合你吗?