Python 如何从环境(如bash)接收数据
如何从shell读取参数,即其他程序正在通过bash管道进行流式处理?其次,Python 如何从环境(如bash)接收数据,python,bash,Python,Bash,如何从shell读取参数,即其他程序正在通过bash管道进行流式处理?其次,print i是否是将数据流传输到环境中的正确方法 我的搜索将我引导到各个模块,但是: 子流程模块允许您生成新流程,连接到它们的输入/输出/错误管道,并获取它们的返回代码 但是,我不希望一个程序产生另一个程序,它们需要从fifo中写入和读取。这将从stdin中一次读取一行并打印它(显然,您可以对该行执行其他操作,例如将其拆分为标记或以其他方式解析): 最快的方法是执行以下操作: #!/usr/bin/python im
print i
是否是将数据流传输到环境中的正确方法
我的搜索将我引导到各个模块,但是:
子流程模块允许您生成新流程,连接到它们的输入/输出/错误管道,并获取它们的返回代码
但是,我不希望一个程序产生另一个程序,它们需要从fifo中写入和读取。这将从stdin中一次读取一行并打印它(显然,您可以对该行执行其他操作,例如将其拆分为标记或以其他方式解析):
最快的方法是执行以下操作:
#!/usr/bin/python
import sys
def main():
while True:
block = sys.stdin.read(2**20)
if not block:
break
# manipulate block somehow
sys.stdout.write(block)
…但只有在能够有效操纵块的情况下,这才有效。如果需要操纵线条,最好按照J.Z.的建议进行操作。打印对于行数据很好,不过我倾向于使用sys.stdout.write。您可以
sys.stdin.readlines
➜ superlists git:(master) ✗ ls -la | python -c "import sys;print sys.stdin.readlines()"
['total 24\n', 'drwxr-xr-x 8 kracekumar staff 272 Dec 19 00:42 .\n', 'drwxr-xr-x@ 4 kracekumar staff 136 Dec 18 01:03 ..\n', 'drwxr-xr-x 13 kracekumar staff 442 Dec 22 10:38 .git\n', '-rw-r--r-- 1 kracekumar staff 18 Dec 18 01:10 .gitignore\n', '-rw-r--r-- 1 kracekumar staff 1463 Dec 19 00:42 function_tests.py\n', 'drwxr-xr-x 13 kracekumar staff 442 Dec 19 00:37 lists\n', '-rw-r--r-- 1 kracekumar staff 253 Dec 18 01:03 manage.py\n', 'drwxr-xr-x 11 kracekumar staff 374 Dec 19 00:29 superlists\n']
注意:
如果将内容传送到shell的程序没有发送
EOF
,python代码将挂起。您能告诉我们更多细节吗?你只是想要一个Python程序从它的stdin读取数据,这样另一个程序就可以通过管道将数据传输到它吗?@JohnZwinck是的,一个可移植的解决方案。print
是从程序中传输数据的一种有效且惯用的方法吗?
➜ superlists git:(master) ✗ ls -la | python -c "import sys;print sys.stdin.readlines()"
['total 24\n', 'drwxr-xr-x 8 kracekumar staff 272 Dec 19 00:42 .\n', 'drwxr-xr-x@ 4 kracekumar staff 136 Dec 18 01:03 ..\n', 'drwxr-xr-x 13 kracekumar staff 442 Dec 22 10:38 .git\n', '-rw-r--r-- 1 kracekumar staff 18 Dec 18 01:10 .gitignore\n', '-rw-r--r-- 1 kracekumar staff 1463 Dec 19 00:42 function_tests.py\n', 'drwxr-xr-x 13 kracekumar staff 442 Dec 19 00:37 lists\n', '-rw-r--r-- 1 kracekumar staff 253 Dec 18 01:03 manage.py\n', 'drwxr-xr-x 11 kracekumar staff 374 Dec 19 00:29 superlists\n']