【发布时间】:2012-08-28 21:15:51
【问题描述】:
有没有办法使用给定的 Python 命令处理 stdin 的每一行,而无需使用样板代码进行设置?
使用 Perl,我可以执行以下操作:
perl -pe '... command ...'
我可以用 Python 做同样的事情吗?
注意:许多其他工具也可以实现类似的功能,例如sed、awk 等...
【问题讨论】:
有没有办法使用给定的 Python 命令处理 stdin 的每一行,而无需使用样板代码进行设置?
使用 Perl,我可以执行以下操作:
perl -pe '... command ...'
我可以用 Python 做同样的事情吗?
注意:许多其他工具也可以实现类似的功能,例如sed、awk 等...
【问题讨论】:
Python 在这方面不如 Perl 方便,但您可以使用 fileinput 接近 Perl 的 -p 标志,如下所示:
python -c 'for ln in __import__("fileinput").input(): print ln.rstrip()' files...
这将像 Perl 一样自动按顺序打开文件,如果没有提供文件,则使用标准输入。将print 替换为任何类型的处理。你可能需要多行来做任何有用的事情,但这对大多数 shell 来说不是问题。
请注意,需要rstrip 以避免源代码行中的换行符和print 语句添加的换行符重复。如果您不打印该行,则无需调用它。
【讨论】:
试试-c解释器选项:
python -c "print 'cool'"
【讨论】: