有没有一个Python等价于“perl-pie”?

2024-06-16 13:29:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道python -c '<code>',但我想知道是否有一种更优雅的python等价于perl -pi -e '<code>'。在整个目录中查找和替换(对于子目录,perl -pi -e s/foo/bar/g *甚至是{})我仍然使用它。在

实际上,我觉得Perl Perl(自由格式Tim Toady ness)正是使perl -pi -e工作得如此出色的原因,而使用Python,您必须按照导入re模块、创建re实例然后捕获stdin的方式来做些事情,但可能有一个Python快捷方式可以完成所有这些,我错过了它(非常怀念它)。。。在


Tags: 模块re目录foo格式pibarcode
3条回答

来自“python -h”的命令行用法显然强烈地表明没有这样的等价物。Perl倾向于广泛使用$_(您的示例隐式地使用它),而且我认为Python不支持任何类似的概念,从而使Perl一行程序的Python等价物更加困难。在

在Python中编写一个等价于-pi的代码并不难。在

  1. 给自己写一个方便的模块,里面有你真正喜欢的-p和-i特性。我们称之为pypi.py

  2. 使用python -c 'import pypi; pypi.subs("this","that")'

您可以用fileinput模块实现basic-p循环。在

您将有一个函数subs,它实现了打开文件、保存备份副本和在每一行执行替换的基本“-i”算法。在

有一些像这样的activestate食谱。以下是一些:

不是内置的。但不难写。而且一旦写出来就很容易定制。在

我知道这已经晚了几年,但我最近 找到了一个非常好的工具,叫做pyp,它可以 正是你所要求的。在

我认为你的命令应该是:

pyp "p.replace('foo','bar')"

相关问题 更多 >