import fileinput
import sys
def replaceAll(file,searchExp,replaceExp):
for line in fileinput.input(file, inplace=1):
if searchExp in line:
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)
from tempfile import mkstemp
from shutil import move
from os import fdopen, remove
def replace(file_path, pattern, subst):
#Create temp file
fh, abs_path = mkstemp()
with fdopen(fh,'w') as new_file:
with open(file_path) as old_file:
for line in old_file:
new_file.write(line.replace(pattern, subst))
#Remove original file
remove(file_path)
#Move new file
move(abs_path, file_path)
下面是另一个经过测试的示例,它将匹配搜索和替换模式:
示例使用:
最短的方法可能是使用fileinput module。例如,下面将行号添加到文件中:
这里发生的是:
print
语句都会写回原始文件fileinput
有更多的钟声和口哨声。例如,它可以用于自动操作sys.args[1:]
中的所有文件,而不必显式地迭代它们。从Python 3.2开始,它还提供了一个方便的上下文管理器,可以在with
语句中使用。虽然
fileinput
对于一次性脚本很好,但我会小心在实际代码中使用它,因为无可否认,它不是很可读或熟悉。在实际(生产)代码中,只需再花费几行代码就可以使过程显式,从而使代码可读。有两种选择:
我想应该是这样的。它基本上将内容写入新文件,并用新文件替换旧文件:
相关问题 更多 >
编程相关推荐