Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从环境(如bash)接收数据_Python_Bash - Fatal编程技术网

Python 如何从环境(如bash)接收数据

Python 如何从环境(如bash)接收数据,python,bash,Python,Bash,如何从shell读取参数,即其他程序正在通过bash管道进行流式处理?其次,print i是否是将数据流传输到环境中的正确方法 我的搜索将我引导到各个模块,但是: 子流程模块允许您生成新流程,连接到它们的输入/输出/错误管道,并获取它们的返回代码 但是,我不希望一个程序产生另一个程序,它们需要从fifo中写入和读取。这将从stdin中一次读取一行并打印它(显然,您可以对该行执行其他操作,例如将其拆分为标记或以其他方式解析): 最快的方法是执行以下操作: #!/usr/bin/python im

如何从shell读取参数,即其他程序正在通过bash管道进行流式处理?其次,
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']