运行() on/into 函数在 python3 (lynux) 中的绑定/管道输出
Binding / piping output of run() on/into function in python3 (lynux)
我正在尝试通过 运行 函数使用外部程序 运行 的输出。
这个程序定期抛出一行数据,我需要在我的脚本中使用这些数据
我找到了一个 subprocess 库并使用了它的 run()
/check_output()
示例:
def usual_process():
# some code here
for i in subprocess.check_output(['foo','$$']):
some_function(i)
现在假设 foo 已经在 PATH 变量中并且它在半随机周期中输出一个字符串。
我希望程序做自己的事情,并且 运行 some_function(i)
每次 foo 将新行发送到它的输出。
这归结为两个问题。将输出通过管道输送到 for 循环中,然后 运行 将其作为后台子进程
谢谢
更新:我已经使用 This 将 foo 输出到 some_function
with os.popen('foo') as foos_output:
for line in foos_output:
some_function(line)
根据 this os.popen 将被弃用,但我还没有弄清楚如何在 python 中传递内部进程
现在只需要弄清楚如何在后台运行这个函数
所以,我已经解决了。
第一步是启动外部脚本:
proc=Popen('./cisla.sh', stdout=PIPE, bufsize=1)
接下来我启动了一个函数来读取它并通过管道传递给它
def foo(proc, **args):
for i in proc.stdout:
'''Do all I want to do with each'''
foo(proc).start()`
限制是:
如果您希望捕获脚本错误,则必须将其通过管道输入。
第二个是如果你杀了父母它会留下一个僵尸所以不要忘记在 signal-handling
中杀死 child
我正在尝试通过 运行 函数使用外部程序 运行 的输出。
这个程序定期抛出一行数据,我需要在我的脚本中使用这些数据
我找到了一个 subprocess 库并使用了它的 run()
/check_output()
示例:
def usual_process():
# some code here
for i in subprocess.check_output(['foo','$$']):
some_function(i)
现在假设 foo 已经在 PATH 变量中并且它在半随机周期中输出一个字符串。
我希望程序做自己的事情,并且 运行 some_function(i)
每次 foo 将新行发送到它的输出。
这归结为两个问题。将输出通过管道输送到 for 循环中,然后 运行 将其作为后台子进程 谢谢
更新:我已经使用 This 将 foo 输出到 some_function
with os.popen('foo') as foos_output:
for line in foos_output:
some_function(line)
根据 this os.popen 将被弃用,但我还没有弄清楚如何在 python 中传递内部进程 现在只需要弄清楚如何在后台运行这个函数
所以,我已经解决了。
第一步是启动外部脚本:
proc=Popen('./cisla.sh', stdout=PIPE, bufsize=1)
接下来我启动了一个函数来读取它并通过管道传递给它
def foo(proc, **args):
for i in proc.stdout:
'''Do all I want to do with each'''
foo(proc).start()`
限制是:
如果您希望捕获脚本错误,则必须将其通过管道输入。
第二个是如果你杀了父母它会留下一个僵尸所以不要忘记在 signal-handling