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


Posted in Python onMarch 20, 2014

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

注意在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
Python 相关文章推荐
python使用自定义user-agent抓取网页的方法
Apr 15 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
May 25 Python
python 循环遍历字典元素的简单方法
Sep 11 Python
python距离测量的方法
Mar 06 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 Python
Python数据可视化图实现过程详解
Jun 12 Python
Python趣味入门教程之循环语句while
Aug 26 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
Python基础知识之变量的详解
Apr 14 Python
python基础之文件操作
Oct 24 Python
Python读写Redis数据库操作示例
Mar 18 #Python
python实现k均值算法示例(k均值聚类算法)
Mar 16 #Python
python实现保存网页到本地示例
Mar 16 #Python
利用打码兔和超人打码自封装的打码类分享
Mar 16 #Python
Python使用代理抓取网站图片(多线程)
Mar 14 #Python
python3.3使用tkinter开发猜数字游戏示例
Mar 14 #Python
Python subprocess模块学习总结
Mar 13 #Python
You might like
谈谈PHP语法(2)
2006/10/09 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
Python 26进制计算实现方法
2015/05/28 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
Django如何自定义分页
2018/09/25 Python
Python List cmp()知识点总结
2019/02/18 Python
python验证身份证信息实例代码
2019/05/06 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
python的faker库用法
2019/11/28 Python
python3爬取torrent种子链接实例
2020/01/16 Python
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
介绍一下write命令
2012/09/24 面试题
实习会计求职自荐信范文
2014/03/10 职场文书
入股协议书
2014/04/14 职场文书
企业理念标语
2014/06/09 职场文书
普通党员个人整改措施
2014/10/27 职场文书
2015年司法所工作总结
2015/04/27 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android
python井字棋游戏实现人机对战
2022/04/28 Python