您好,欢迎访问一九零五行业门户网

python实现文件名批量替换和内容替换

指定文件夹,指定文件类型,替换该文件夹下全部文件的内容。
注意在window下的读写内容需要指定编码,还需要在文件头指定#coding:utf-8 编码,避免出现编码问题。
复制代码 代码如下:
#coding:utf-8
import os
import os.pathpath='.'
oldstr='.php'
newstr='.html'
for (dirpath, dirnames, filenames) in os.walk(path):
    for file in filenames:
        if os.path.splitext(file)[1]=='.html':
            print(file)
            filepath=os.path.join(dirpath,file)
            try:
                text_file = open(filepath, r)
                lines = text_file.readlines()
                text_file.close()
                output  = open(filepath,'w',encoding= 'utf-8')
                for line in lines:
                    #print(line)
                    if not line:
                        break
                    if(oldstr in line):
                        tmp = line.split(oldstr)
                        temp = tmp[0] + newstr + tmp[1]
                        output.write(temp)
                    else:
                        output.write(line)
                output.close()
            except exception:
                print(exception)
                break
这个示例可以批量替换文件名和内容
复制代码 代码如下:
#!/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)
def batrename(curdir, pairs):
    for fn in os.listdir(curdir):
        newfn = multi_replace(fn, pairs)
        if newfn != fn:
            print(renames %s to %s in %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, pairs)
            continue
text = open(file).read()
        newtext = multi_replace(text, pairs)
        if newtext != text:
            print(renames %s. % (file,))
            open(file, 'w').write(newtext)
if __name__==__main__:
    while true:
        oldname = raw_input(old name: )
        newname = raw_input(new name: )
        if oldname and newname:
            batrename(os.path.abspath('.'), {oldname:newname})
        else: break
其它类似信息

推荐信息