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

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

注意在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

(0)

相关推荐

  • python实现批量改文件名称的方法

    本文实例讲述了python实现批量改文件名称的方法.分享给大家供大家参考.具体分析如下: 发现python中提供了大量的模块函数,有时候一些系统操作在python中非常简单 下面的文件关键是要放到要操作的目录下, 下面是把当前目录下的图片批量命名,从00开始,其中小于10 的我们在名称前面补零,或者可以利用os设置路径 #-*- coding: UTF-8 -*- import os filenames = os.listdir(os.getcwd()) for name in filename

  • Python中使用第三方库xlutils来追加写入Excel文件示例

    目前还没有更好的方法来追写Excel,lorinnn在网上搜索到以及之后用到的方法就是使用第三方库xlutils来实现了这个功能,主体思想就是先复制一份Sheet然后再次基础上追加并保存到一份新的Excel文档中去. 使用xlutils 代码实现如下: # -*- coding: utf-8 -*- ''' Created on 2012-12-17 @author: walfred @module: XLRDPkg.write_append @description: ''' import o

  • Python批量创建迅雷任务及创建多个文件

    其实不是真的创建了批量任务,而是用python创建一个文本文件,每行一个要下载的链接,然后打开迅雷,复制文本文件的内容,迅雷监测到剪切板变化,弹出下载全部链接的对话框~~ 实际情况是这样的,因为用python分析网页非常,比如下载某页中的全部pdf链接 from __future__ import unicode_literals from bs import BeautifulSoup import requests import codecs r = requests.get('you ur

  • Python创建文件和追加文件内容实例

    一.用Python创建一个新文件,内容是从0到9的整数, 每个数字占一行: 复制代码 代码如下: #python >>>f=open('f.txt','w')    # r只读,w可写,a追加 >>>for i in range(0,10):f.write(str(i)+'\n') .  .  . >>> f.close() 二.文件内容追加,从0到9的10个随机整数: 复制代码 代码如下: #python >>>import ran

  • Python实现文件内容批量追加的方法示例

    本文实例讲述了Python实现文件内容批量追加的方法.分享给大家供大家参考,具体如下: #coding:utf-8 import os #-------代码段一 #获取当前文件夹 filePath = os.getcwd() #获取当前文件列表 fileNameList = os.listdir(filePath) fileDirList = [] #获取文件路径列表 for fileName in fileNameList: fileDirList.append(os.path.join(fi

  • 用python实现批量重命名文件的代码

    下面是最终代码 (windows下实现的) 复制代码 代码如下: # -*- coding: cp936 -*- import os path = 'D:\\图片\\' for file in os.listdir(path): if os.path.isfile(os.path.join(path,file))==True: if file.find('.')<0: newname=file+'rsfdjndk.jpg' os.rename(os.path.join(path,file),os

  • Python文件操作,open读写文件,追加文本内容实例

    1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt') try: all_the_text = file_object.read( ) finally: file_object.close( ) 注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法. 2.读文件读文本文件input

  • Python批量转换文件编码格式

    自己写的方法,适用于linux, #!/usr/bin/python #coding=utf-8 import sys import os, os.path import dircache import commands def add(x,y): return x*y def trans(dirname): lis = dircache.opendir(dirname) for a in lis: af=dirname+os.sep+a ## print af if os.path.isdir

  • Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_all() from gevent.pool import Pool import requests import sys import os def download(url): chrome = 'Mozilla/5.0 (X11; Linux i86_64) AppleWebKit/537.36

  • Python批量修改文件后缀的方法

    近期下载了很多各种教程, 但是不幸的是后缀名都是 ".mp4", 而本人喜欢 ".rmvb" 后缀,由于有轻微洁癖, 受不了后面的 ".mp4" 缀, 但是手动修改又太过繁琐, 所以用近期刚学的 Python 来偷懒吧 !   : ) 如图为程序运行前的文件名 我们要做的呢, 就是在当前目录下,新建一个python文件, 如上图 demo2.py 然后用编辑器打开敲入如下代码: 复制代码 代码如下: import os # 列出当前目录下所有的文

随机推荐