我想读取字节。sys.stdin以文本模式打开,但它有一个可用于读取字节的缓冲区:sys.stdin.buffer。

我的问题是,当我将数据导入python时,如果我想提前阅读,似乎只有两个选项,否则我将得到一个io.UnsupportedOperation: File or stream is not seekable.从sys.stdin读取缓冲文本,将该文本解码为字节,然后返回

(sys.stdin.read(1).decode(); sys.stdin.seek(-1, io.SEEK_CUR)。

由于输入流中的字节不可编码,因此不可接受。

使用peek从stdin的缓冲区中获取一些字节,将其切片到适当的数字,然后祈祷,因为peek不能保证任何东西:它可能给出的比您请求的少或多

(sys.stdin.buffer.peek(1)[:1])

peek实际上是文档不足的,它给了您一堆字节,您必须对这些字节进行密集的性能切片。

顺便说一下,这个错误实际上只适用于以下情况:对于./myscript.py

#!/usr/bin/env python3

from sys import stdin

print(stdin)

print(stdin.buffer)

print(stdin.buffer.raw)"

$ ./testio.py

$ ./testio.py

[the same as above]

$ echo hi | ./testio.py

[the same as above]

一些最初的想法,比如将字节流包装成随机访问缓冲区,但失败了,错误与上面提到的相同:BufferedRandom(sys.stdin.buffer).seek(0)•io.UnsupportedOperation…

最后,为了您的方便,我提出:

Python的io类层次结构IOBase

├RawIOBase

│└FileIO

├BufferedIOBase (buffers a RawIOBase)

│├BufferedWriter┐

│├BufferedReader│

││ └─────┴BufferedRWPair

│├BufferedRandom (implements seeking)

│└BytesIO (wraps a bytes)

└TextIOBase

├TextIOWrapper (wraps a BufferedIOBase)

└TextIO (wraps a str)

如果你忘了这个问题:我如何从stdin获取下一个字节,而不进行任何反编码,也不推进流的光标?

python stdin read_python 3:使用readahead从stdin管道读取字节相关推荐

  1. 【python ACM 输入输出的处理:sys.stdin.readline().strip().split())】

    [python & ACM 输入输出的处理:sys.stdin.readline().strip().split())] 一.输入处理 按行读取数据 readline() 会返回一个字符串: ...

  2. fflush(stdin)和fflush(stdout)和rewind(stdin)的区别和作用

    理解:fflush(stdin)和fflush(stdout)和rewind(stdin) 小结论(多谢网友zhao4zhong1为我解答疑难): 1.在每个最后不带\n的printf后面加fflus ...

  3. python+opencv电表读数自动识别,电表电量自动读取

    python+opencv电表读数自动识别,电表电量自动读取,直接运行image_re.py,输入需要读数的电表图片即可,程序包中以提供测试图片(1.jpg-4.jpg).opencv采用3.4.15 ...

  4. 第一个Python程序hello.py提示出现File stdin,line 1错误

    写第一个Python程序hello.py,内容仅有一句,print 'hello world', 运行 Python hello.py 出错,提示: File "<stdin>& ...

  5. python出现file stdin_第一个Python程序hello.py提示出现File stdin,line 1错误

    写第一个Python程序hello.py,内容仅有一句,print 'hello world', 运行 Python hello.py 出错,提示: File "" , line ...

  6. php 读取管道,php – 使用proc_open时从STDIN管道读取

    它更像是C或glibc问题.你必须使用fflush(stdout). 为什么?在终端中运行a.out和从PHP调用它有什么区别? 答:如果你在终端中运行a.out(正在使用stdin),那么glibc ...

  7. [Python爬虫] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题

    最近研究搜索引擎.知识图谱和Python爬虫比较多,中文乱码问题再次浮现于眼前.虽然市面上讲述中文编码问题的文章数不胜数,同时以前我也讲述过PHP处理数据库服务器中文乱码问题,但是此处还是准备简单做下 ...

  8. 《Python Cookbook 3rd》笔记(2.20):字节字符串上的字符串操作

    字节字符串上的字符串操作 问题 你想在字节字(Byte String)符串上执行普通的文本操作 (比如移除,搜索和替换) 解法 字节字符串同样也支持大部分和文本字符串一样的内置操作.比如: >& ...

  9. python subprocess pipe_python类库31[进程subprocess与管道pipe]

    修改自: 原文 : Working with Python subprocess - Shells, Processes, Streams, Pipes, Redirects and More 一 程 ...

最新文章

  1. inline-block 间距
  2. 编程之美-寻找最大的k个数
  3. 会计记忆总结之四:会计凭证
  4. [转]SqlServer2005 各版本区别
  5. ab flash player 8_FLASH 质子治疗的技术挑战
  6. Prosjecni(构造)
  7. 一个基于Node.js的本地快速测试服务器 1
  8. 历经十年,Windows 7 生命周期将结束,微软:快换 Windows 10
  9. MicroK8s及KubeFlow安装文档
  10. mwt是什么意思网络用语_网络用语奶茶婊是什么意思(奶茶婊具备的3个表现)...
  11. PHP上传文件大小限制的问题
  12. 关于这个blog使用的问题?
  13. python的设计模式
  14. MATLAB中 histogram 和 imhist 的区别
  15. 徐培成2017大数据Hadoop经典案例-徐培成-专题视频课程
  16. 3t studio 导出数据_Studio 3T下操作MongoDB的基本命令(转载)
  17. python视频关键帧提取_视频关键帧提取
  18. ctf逆向解题——re1
  19. 5分钟快速学会使用Swiper.js,实现轮播图各种效果!
  20. 冰雪复古鸿蒙碎片哪里出,复古冰雪玩法总览!!!干货!!!

热门文章

  1. 今天日期减去过去日期_汽车各零部件也有身份证,教你们如何看这些部件的quot;出生日期quot;...
  2. java数据成员_Java基础教程之对象的方法与数据成员
  3. 新版本NexT 调动态背景、调canvas_nest的解决方案
  4. 蓝桥杯 基础练习 Huffuman树
  5. 链表的C++创建及翻转
  6. mac连接ubuntu,tomcat乱码
  7. Why Helm? - 每天5分钟玩转 Docker 容器技术(160)
  8. Linux故障自愈脚本,实现故障自愈要攻克的3个问题以及开箱即用的方案
  9. [Ext JS]5.11 轻量版的树- treelist
  10. 小巧的Web进度条组件 - NProgress