我想学习使用python作为命令行脚本替换.我过去花了一些时间与python但是已经有一段时间了.这似乎属于它的范围.
我在一个文件夹中有几个文件,我想在所有文件夹中进行搜索和替换.我想用python脚本来做.
例如,搜索并用" foo" 替换" "的所有实例foobar.
欢迎来到StackOverflow.既然你想学习自己(+1)我会给你一些指示.
检查os.walk()以获取所有文件.
然后迭代文件中的每一行(for line in currentfile:在这里派上用场).
现在你需要知道你是否想要一个"愚蠢的"替换(找到/替换每个,foo即使它在一个单词的中间(比如foobar- 你想要foofoobar结果?)或智能替换.
对于前者,看看str.replace()后者,看看re.sub()并找出其r'\bfoo\b'意义.
perl -pi -e 's/foo/foobar/'通常我会为此删除旧的,但如果你想要Python:
import os
import re
_replace_re = re.compile("foo")
for dirpath, dirnames, filenames in os.walk("directory/"):
for file in filenames:
file = os.path.join(dirpath, file)
tempfile = file + ".temp"
with open(tempfile, "w") as target:
with open(file) as source:
for line in source:
line = _replace_re.sub("foobar", line)
target.write(line)
os.rename(tempfile, file)
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Windows,则需要os.remove(file)在os.rename(tempfile, file).
| 归档时间: |
|
| 查看次数: |
5633 次 |
| 最近记录: |