草庐IT

stdin_reader

全部标签

python - 在 Windows 上的 select.select 中使用 sys.stdin

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Canselect()beusedwithfilesinPythonunderWindows?在UNIX上,我可以将sys.stdin传递给Python中的select.select。我试图在Windows上执行此操作,但Windows上Python中的select.select不允许这样做。要更准确地描述我在做什么,请参阅https://github.com/eldarion/gondor-client/blob/ccbbf9d4b61ecbc2f66f510b993eb5fba0d81c09/gondor

python - 将 STDIN 传递给一个本身被传递给 Python 解释器的脚本?

我需要实现一个SVN预提交Hook,它执行本身存储在SVN中的脚本。我可以使用svncat命令将该脚本通过管道传递给Python解释器,如下所示:svncatfile://$REPO/trunk/my_script.py|python---argument1--argument2但是,my_script.py本身需要将数据传输到STDIN。该数据未存储在文件中;它存储在网络上。我宁愿不必将数据下载到临时文件,因为通常我可以将其通过管道传输到Python程序:curlhttp://example.com/huge_file.txt|pythonmy_script.py我不确定如何组合这两

python - 为什么 csv.reader 不是 pythonic?

我开始使用csv.reader在Python2.6中,但您不能在其上使用len或对其进行切片等。这背后的原因是什么?这当然感觉非常有限。或者这只是后来版本中的一个废弃模块? 最佳答案 我很确定您不能使用len或slice,因为它是一个迭代器。试试这个。importcsvr=csv.reader(...)lines=[lineforlineinr]printlen(lines)#numberoflinesforoddinlines[1::2]:printodd#printoddlines

Python - 使用 map(sys.stdin.readline()) 存储一个字符串和一个 int

如果输入包含一个空格分隔的int行,比如-13我可以使用map()函数将其映射存储在数组中arr=map(int,sys.stdin.readline().split())或者甚至在两个独立的变量中,通过n,m=map(int,sys.stdin.readline().split())有没有办法用同样的方式读取包含混合数据类型的输入行。例如-foo3foo是字符串,3是整数? 最佳答案 如果你总是有一个字符串和非负整数:importsysn,m=map(lambdax:(str,int)[x.isdigit()](x),sys.st

python - 强制 python 脚本从 STDIN 获取输入

我需要运行的python脚本仅从作为命令行参数传递的文件获取输入,如下所示:$markdown.pyinput_file有没有办法让它接受来自STDIN的输入?我希望能够通过Bash执行此操作,而无需显着修改python脚本:$echo"Sometexthere"|markdown.py如果我必须修改Python脚本,我该怎么做?(编辑:Here是解析命令行选项的脚本。) 最佳答案 我不确定它的可移植性如何,但在Unix-y系统上你可以将/dev/stdin命名为你的文件:$echo-nhithere|wc/dev/stdin028

Python 的 json.load(sys.stdin) 让我用'...'代替字符串周围的双引号

当我这样做时:importsys,json;importrequestsheaders={'Content-Type':'application/json','X-Parse-Application-Id':'...','X-Parse-REST-API-Key':'...'}data=json.load(sys.stdin)forstationindata["data"]:printstationres=requests.post('https://api.parse.com/1/classes/test4',data=station,headers=headers)我明白了{u'c

Python 使用 input() 逐行迭代 stdin

我正在尝试从控制台获取多个以换行符分隔的名称,并将它们放入一个变量中。假设我想永远从终端获取输入(稍后我将添加一些代码来跳出循环)。我知道如何使用while循环和递归来完成它,但我希望能够使用for循环来完成它。在下面的示例中,当我从终端输入"peter"时,我一次得到每个字母而不是整行:fornameininput():print(name)现在,如果我使用sys.stdin,name变量将变为"peter\n":fornameinsys.stdin:print(name)有没有一种简单的方法可以让input()给"name"整行而不是单个字符?或者只是由于使用forin的性质,我将

Python sys.stdin.read(max) 阻塞直到读到max(如果max>=0),阻塞直到EOF else,但是select表示有数据要读取

我的问题是:select表示有数据要读,有什么就读什么,不想等max存在的金额。如果maxmax>0读取块直到max字节可以读取。我不想要这个,我想阅读任何数量的select把它放在“准备阅读”列表中。read(1)是不切实际的,因为这将涉及到大量的读取调用。但它不能阻塞。有没有办法在select返回时找出缓冲区中存在的数量(如果它返回表明可以读取某些内容,而不是超时)并读取该数量?有没有办法使用max就像使用套接字一样?它立即读取尽可能多的内容,然后返回?解决方案可能是将文件置于非阻塞模式以进行读取?我不确定,我没想到这种“直到EOF”的行为。我会继续阅读和尝试,但我只花了30分钟左

python - 重复写入 stdin 并从 python 进程的 stdout 读取

我有一段Fortran代码,它从STDIN读取一些数字并将结果写入STDOUT。例如:doread(*,*)xy=x*xwrite(*,*)yenddo所以我可以从shell启动程序并获得以下inputs/outputs序列:5.025.02.56.25现在我需要在python中执行此操作。在与subprocess.Popen进行了徒劳的搏斗并浏览了该站点上的旧问题之后,我决定使用pexpect.spawn:importpexpect,osp=pexpect.spawn('squarer')p.setecho(False)p.write("2.5"+os.linesep)res=p.r

python 3 : reading bytes from stdin pipe with readahead

我想读取字节。sys.stdin以文本模式打开,但它有一个可用于读取字节的缓冲区:sys.stdin.buffer.我的问题是,当我将数据通过管道传输到Python时,如果我想要预读,我似乎只有2个选项,否则我会得到一个io.UnsupportedOperation:Fileorstreamisnotseekable.从sys.stdin读取缓冲文本,将该文本解码为字节,然后寻找(sys.stdin.read(1).decode();sys.stdin.seek(-1,io.SEEK_CUR).由于输入流中的不可编码字节而无法接受。使用peek从stdin的缓冲区中获取一些字节,将其切