当前位置: 首页 > 面试题库 >

如何从Linux程序逐行将输入管道到python?

邹普松
2023-03-14
问题内容

我想ps -ef逐行将输出到python。

我正在使用的脚本是这个(first.py)-

#! /usr/bin/python

import sys

for line in sys.argv:
   print line

不幸的是,“行”被分成由空格分隔的单词。因此,例如,如果我这样做

echo "days go by and still" | xargs first.py

我得到的输出是

./first.py
days
go
by
and
still

如何编写脚本以使输出为

./first.py
days go by and still


问题答案:

建议不要从 标准输入stdin)中读取,而不要使用命令行参数。Python有一个简单的惯用法,用于遍历以下行stdin

import sys

for line in sys.stdin:
    sys.stdout.write(line)

我的用法示例(上面的代码已保存到iterate-stdin.py):

$ echo -e "first line\nsecond line" | python iterate-stdin.py 
first line
second line

以您的示例为例:

$ echo "days go by and still" | python iterate-stdin.py
days go by and still


 类似资料:
  • 问题内容: 如何从C ++ / Qt Linux应用程序逐行读取FIFO /命名管道? 今天,我可以从Qt程序的fifo中打开和读取数据,但是我无法使该程序逐行读取数据。Qt读取整个文件,这意味着他要等到“发送方”关闭其会话。 让我们以一些shell命令为例,展示我希望应用程序执行的操作。 首先创建一个fifo 然后我们可以用猫从fifo中读取 然后我们与另一只猫一起发送一些数据 然后开始输入内容

  • 问题内容: 从标准输入逐行读取的Scala配方是什么?类似于等效的Java代码: 问题答案: 最直接的前瞻性的方式将只使用它的一部分。但是,这很丑陋,因为您需要检查最终的空值: 这太冗长了,您宁可使用它。 我认为将使用更漂亮的方法:

  • 问题内容: 我想在Linux操作系统上的C程序内执行以下操作: 使用syscall(或2)创建PIPE 使用exec()执行新流程 将流程的STDIN连接到先前创建的管道。 将流程的输出连接到另一个PIPE。 这样做的目的是为了性能目的而避免访问任何驱动器。 我知道使用PIPE系统调用创建管道非常简单,我可以使用popen为输入或输出目的创建管道。 但是您将如何针对输入和输出执行此操作? 问题答案

  • null (它也应该与ffprobe和ffplay一起工作)

  • 问题内容: 在Linux 3.0 / C ++下: 我想要一个执行以下操作的函数: 显然上述方法不起作用,但是您可以理解。我有一个字符串s,我希望将其作为应用程序“ foo”的子进程执行的标准输入传递,然后将其标准输出记录到字符串r中,然后将其返回。 我应该使用linux syscall或posix函数的什么组合? 问题答案: eerpini提供的代码无法正常工作。请注意,例如,之后将使用在父级中

  • 问题内容: 本质上,我正在尝试替换: 为了避免使用硬盘驱动器,请在C ++中使用管道。这是我的代码: 我绝对可以确保上述字符串已正确初始化。但是,发生了两件事对我来说没有意义: (1)我正在执行的程序报告“输入文件为空”。由于我未使用“ <”调用程序,因此不应期望输入文件。相反,它应该期待键盘输入。此外,它应该阅读“ gulp_command”中包含的文本。 (2)程序的报告(通过标准输出提供)出