草庐IT

python - 如何在 Python 中显示重定向的标准输入?

我正在开始一个Python项目,其中stdin重定向是必需的,使用类似于下面的代码:importsysimportStringIOs=StringIO.StringIO("Hello")sys.stdin=sa=raw_input("Typesomething:")sys.stdin=sys.__stdin__print("Youtypedin:"+a)问题是,代码运行后,显示如下:Typesomething:Youtypedin:Hello有没有办法修改我的代码,以便显示以下内容?Typesomething:HelloYoutypedin:Hello我一直在上下搜索,但还没有找到答案

python - Argparse 和 ArgumentDefaultsHelpFormatter。选择 sys.stdin/stdout 作为默认值时的默认值格式

我对使用argparse的ArgumentDefaultsHelpFormatter类格式化程序很感兴趣(我的程序有几个子命令)。默认情况下,输入和输出参数分别设置为sys.stdin和sys.stdout。但是,这两个参数的格式可能会让用户有点困惑(例如(默认值:',mode'r'at0x10028e0c0>)。有没有一种方法可以专门轻松地更改这两个参数的输出格式以获得像“默认:STDIN”或“默认:STDOUT”之类的东西?谢谢importsysimportargparseparser=argparse.ArgumentParser(prog='PROG',formatter_cl

python : Postfix stdin

我想让postfix将所有电子邮件发送到将扫描电子邮件的python脚本。但是,如何通过管道将输出从postfix传输到python?Python的标准输入是什么?你能给出一个代码示例吗? 最佳答案 而不是调用sys.stdin.readlines()然后循环并将这些行传递给email.FeedParser.FeedParser().feed()正如Michael所建议的那样,您应该将文件对象直接传递给电子邮件解析器。标准库提供了一个方便的函数,email.message_from_file(fp),以此目的。因此您的代码变得更加简

python - 在 pycharm 中使用标准输入

这个问题在这里已经有了答案:Readingfromafilewithsys.stdininPycharm(5个答案)关闭5年前。我已经开始使用pycharm了,但我似乎不能在我用来以这种方式运行程序的命令行中:pythonparse_file.py当parse_file.py可以简单为:importsysforlineinsys.stdin:printline我无法在配置中找到在哪里做我尝试输入类似的内容在脚本参数中但没有运气我看过https://www.jetbrains.com/pycharm/help/run-debug-configuration-python.html但也没有

python - 如何使用字符串作为标准输入

我一直为Python的一个看似简单的问题发疯:我想调用一个使用raw_input()和input()的函数,并以某种方式在我的程序中为它们提供一个字符串。我一直在搜索,发现subprocess可以将stdin和stdout更改为PIPE;但是,我不能使用subprocess来调用函数。这是一个例子:deftest():a=raw_input("Typesomething:")returnaif__name__=='__main__':string="HelloWorld"#Iwanttoaintest()tobeHelloWorldreturnValue=test()当然这比我想要完成

Python close_fds 不清楚

我在Python27中遇到了close_fds的问题,所以在做了一些研究之后我发现了这个example:fromsubprocessimportPopen,PIPE,STDOUTp1=Popen(['cat'],stdin=PIPE,stdout=PIPE)p2=Popen(['grep','a'],stdin=p1.stdout,stdout=PIPE)p1.stdin.write("aaaaaaaaaaaaaaaa\n")p1.stdin.close()p2.stdout.read()我的问题是我无法理解为什么p1.stdin保持打开状态。p1不是p2的子级,因此p2不应继承除p1

Python 子进程 - 写入多个标准输入

我需要打开一个R脚本并为其提供由单独的python脚本制定的输入。subprocess模块似乎是执行此操作的好方法。虽然我遇到了一些令人费解的结果,即我显然可以通过p.stdin写一次且只能写一次。这是我到目前为止所拥有的:fromsubprocessimportPopen,PIPE,STDOUTp=Popen(['r--no-save'],stdin=PIPE,stdout=PIPE,stderr=PIPE,shell=True)p.stdin.write("source('myrscript.R')\n")p.stdin.write('myfirstinput')当我运行这段代码时

python - 数据损坏 C++ 和 Python 之间的管道

我正在编写一些代码,从Python获取二进制数据,将其通过管道传输到C++,对数据进行一些处理(在本例中计算互信息度量),然后将结果通过管道传输回Python。在测试时,我发现如果我发送的数据是一组2个尺寸小于1500X1500的数组,一切正常,但如果我发送2个2KX2K的数组,我会得到很多损坏的废话。我目前认为代码的算法部分很好,因为它在使用小型(Python代码和C++代码如下。Python代码:importsubprocessimportstructimportsysimportnumpyasnp#setupthevariablesneededbytesPerDouble=8si

python - 将 "Slurp"所有 STDIN 转换为字符串的最有效方法

我正在为python2.7编写一个电子邮件解析器,它将使用别名通过sendmail调用,使用电子邮件模块进行解析,然后进行处理并存储到oracle数据库中:来自/etc/aliases:蝇蛆:|/我的/python/script.py我无法将所有stdin“slurping”成一个可以与电子邮件模块一起使用的字符串对象:importemail#Slurpstdinandstoreintomessagemessage=msg=email.message_from_string(message)#Dosomethingwithitprintmsg['Subject']最有效的方法是什么?我

python - 标准输入似乎比标准输出(python)慢得多。为什么?

我有两个python程序(一个是子进程)需要相互通信。目前我正在通过stdin和stdout来实现。然而,写入子进程的stdin似乎慢得令人痛苦。a.py,一个接受任意行输入并打印时间的程序:fromtimeimporttime,sleepfromsysimportstdout,stdinwhileTrue:stdin.readline()stdout.write('%f\n'%time())stdout.flush()b.py,一个运行a.py的程序,计算写入程序的stdin和从中读取所需的时间这是stdout:fromtimeimporttimefromsubprocessimpo