ホームページ >バックエンド開発 >Python チュートリアル >Pythonはファイル名とコンテンツの一括置換を実装します
フォルダーを指定し、ファイルの種類を指定して、フォルダー内のすべてのファイルの内容を置き換えます。
ウィンドウでコンテンツを読み書きするにはエンコードを指定する必要があり、エンコードの問題を避けるためにファイル ヘッダーで #coding:utf-8 エンコードを指定する必要があることに注意してください。
path='.'
oldStr='.php'
newStr='.html'
for (dirpath, dirnames, filenames) in os.walk(path):
for file in filenames:
if os.path.splitext(file)[1]=='.html': line でない場合: Break
If (OldStr in Line):
TMP = LINE.SPLIT (OldStr )
TEMP = TMP [0] + Newstr + TMP [1]
Output.write (TEMP (TEMP )
else:
Output.write(line)
Output.close()
印刷(例外)この例では、ファイル名と内容をバッチで置き換えることができます
コードをコピー
コードは次のとおりです:
#!/usr/bin/env python
# -*-coding: utf-8 -*-
import os, re
def multi_replace(text 、adict):
rx = re.compile('|'.join(map(re.escape, adict)))
def xlat(match):
return adict[match.group(0) ]
return rx.sub(xlat, text)
defbatrename(curdir,pairs):
for fn in os.listdir(curdir):
newfn = multi_replace(fn,pairs) )
if newfn != fn:
print("%s の名前を %s の %s に変更します。" % (fn, newfn, curdir))
os.rename(os.path.join(curdir) 、fn)、os.path.join(curdir, newfn))
file = os.path.join(curdir, newfn)
if os.path.isdir(file):
batrename (file,ペア)
続行
text = open(file).read()
newtext = multi_replace(text,pairs)
if newtext != text:
print( "%s の名前を変更します。" % (file,))
open(file, 'w').write(newtext)
if __name__=="__main__":
while True:
oldname = raw_input("古い名前: ")
newname = raw_input("新しい名前: ")
if oldname and newname:
batrename(os.path.abspath('.'), {oldname :newname})
else: ブレーク