草庐IT

STDIN_FILENO

全部标签

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的缓冲区中获取一些字节,将其切

python - 如何在 python 中将 EOF 写入 STDIN popen

我通过popen运行以下命令:p=subprocess.popen(["/usr/bin/whiptail","--title","\"Progress\"","--gauge","\"\"","6","50","0"],stdout=subprocess.PIPE,stding=subprocess.PIPE)要停止运行whiptail命令,我需要将EOF发送到标准输入。如何在Python中将EOF发送到标准输入?或者我只是调用p.terminate() 最佳答案 您需要关闭用作脚本标准输入的文件。因此在您的情况下是p.stdin

python - 属性错误 : 'str' object has no attribute 'fileno'

代码:importsubprocessdefprintit():foriinrange(6):forjinrange(6):query="selectrxpkts,txpktsfrom./log.csvwheredatapath="+str(i)+"andport="+str(j)fileName=str(i)+"_"+str(j)+".csv"withopen(fileName,"w+"):p=subprocess.Popen(["python","q","-H","-d",",",query],stdout=fileName)printit()错误:$pythonprocessLo

python - 将 stdin 行保留在终端屏幕的顶部或底部

所以我正在编写一个项目,我在其中运行一个程序,该程序不断地向运行相同程序的其他计算机接收/发送消息。数据的接收者/发送者在线程上运行并打印到标准输出。我得到这样的东西:[INFO]User'blah'wantstosendmessagetoyou.[INFO]someotherinfo[MSGREC]Message'hello'receivedfromblah.现在的问题是,有时我希望在终端中输入命令,问题是当我尝试输入命令时,新的信息消息或MSGREC被打印到标准输出。我有诸如quit和status等命令>>表示输入行。可能会发生这样的事情:[INFO]User'blah'wants

python - sys.stdin.readlines() 挂起 Python 脚本

每次我执行Python脚本时,它似乎都卡在这一行:lines=sys.stdin.readlines()我应该怎么做才能解决/避免这种情况?编辑这是我对lines所做的:lines=sys.stdin.readlines()updates=[line.split()forlineinlines]编辑2我正在从一个git钩子(Hook)运行这个脚本,所以EOF周围有没有? 最佳答案 这在很大程度上取决于您要完成的任务。你也许可以:forlineinsys.stdin:#dosomethingwithline当然,使用这个习惯用法以及您

python - 使用 optparse 将 stdin 和 stdout 重定向到 python 中的文件的一致方法

我有十几个程序可以通过标准输入或选项接受输入,我想以类似的方式为输出实现相同的功能。optparse代码如下所示:parser.add_option('-f','--file',default='-',help='Specifiestheinputfile.Thedefaultisstdin.')parser.add_option('-o','--output',default='-',help='Specifiestheoutputfile.Thedefaultisstdout.')其余的适用代码如下所示:ifopts.filename=='-':infile=sys.stdinel