如何批量替换 python 中许多文件中的行?
How to batch substitute lines in many files in python?
我有几个 .md
文件的文件夹(有几个 sub-folders),它们共享相同的基本结构:
###### v1
Blah blah
###### v2
Blah blah
...
我想在每个 header:
的末尾添加基本文件夹的名称,例如 NET、ESV
###### v1 NET
Blah blah
###### v2 NET
Blah blah
...
这是我在 Python 上的业余尝试,目前失败了:
import os, re, fileinput
for root, dirs, files in os.walk("/NET"):
for file in files:
if file.endswith(".md"):
for line in fileinput(files=file, inplace=1, backup='.bak'):
line = re.sub(r'(#+ v\d{1,3})( )', r'NET')
有关高效 python 正则表达式子的建议或提示?
import os, re
for root, dirs, files in os.walk("/NET"):
for file in files:
if not file.endswith(".md"):
continue
finame = os.path.join( root, file )
foname = finame[:-3]+'.tmp'
fout = open(foname,'w')
for line in open(finame):
line = re.sub(r'(#+ v\d{1,3}) ', r' NET', line)
fout.write( line )
fout.close()
os.remove( finame )
os.rename( foname, finame )
我有几个 .md
文件的文件夹(有几个 sub-folders),它们共享相同的基本结构:
###### v1
Blah blah
###### v2
Blah blah
...
我想在每个 header:
的末尾添加基本文件夹的名称,例如 NET、ESV###### v1 NET
Blah blah
###### v2 NET
Blah blah
...
这是我在 Python 上的业余尝试,目前失败了:
import os, re, fileinput
for root, dirs, files in os.walk("/NET"):
for file in files:
if file.endswith(".md"):
for line in fileinput(files=file, inplace=1, backup='.bak'):
line = re.sub(r'(#+ v\d{1,3})( )', r'NET')
有关高效 python 正则表达式子的建议或提示?
import os, re
for root, dirs, files in os.walk("/NET"):
for file in files:
if not file.endswith(".md"):
continue
finame = os.path.join( root, file )
foname = finame[:-3]+'.tmp'
fout = open(foname,'w')
for line in open(finame):
line = re.sub(r'(#+ v\d{1,3}) ', r' NET', line)
fout.write( line )
fout.close()
os.remove( finame )
os.rename( foname, finame )