当前位置 博文首页 > python实现文件名批量替换和内容替换

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

    作者:admin 时间:2021-07-03 18:48

    指定文件夹,指定文件类型,替换该文件夹下全部文件的内容。

    注意在window下的读写内容需要指定编码,还需要在文件头指定#coding:utf-8 编码,避免出现编码问题。

    复制代码 代码如下:

    #coding:utf-8
    import os
    import os.path

    path='.'
    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

    jsjbwy
    下一篇:没有了