参考:http://blog.csdn.net/zcwfengbingdongguke/article/details/13951527

代码:

#!/usr/bin/python

import os

import re

#list files

def listFiles(dirPath):

    fileList=[]

    for root,dirs,files in os.walk(dirPath):

        for fileObj in files:

            fileList.append(os.path.join(root,fileObj))

    return fileList

def main():

    fileDir = "/home/hadoop/developer/csvpy/replstr"

    regex = ur'FUNC_SYS_ADD_ACCDETAIL'

    fileList = listFiles(fileDir)

    for fileObj in fileList:

        f = open(fileObj,'r+')

        all_the_lines=f.readlines()

        f.seek(0)

        f.truncate()

        for line in all_the_lines:

            f.write(line.replace('$HADOOP_HOME$','/home/ocetl/app/hadoop'))    

        f.close()  

if __name__=='__main__':

    main() 

ReplaceStrBatch

作用:

  批量将指定目录下的所有文件中的$HADOOP_HOME$替换成/home/ocetl/app/hadoop

知识点:

1. def listFiles(dirPath):

  定义函数

2. fileList=[]

  声明数组

3. for root,dirs,files in os.walk(dirPath):

  os.walk("")

    返回一个三元组,遍历的路径、当前遍历路径下的目录、当前遍历目录下的文件名

4. os.path.join(root,fileObj)

  directory = ["C", "pic", "18x.jpg"]
  os.path.join(*directory) #相当于os.path.join("C", "pic", "18x.jpg")

5. regex = ur'FUNC_SYS_ADD_ACCDETAIL'

  regex=ur"" #正则表达式

  本例中不加这个正则,不影响运行结果

6. f = open(fileObj,'r+')

  r+:  可读可写,若文件不存在,报错
  w+: 可读可写,若文件不存在,创建

7. all_the_lines=f.readlines()

  .readlines()每次按行读取整个文件内容,将读取到的内容放到一个列表中,返回list类型

7. f.seek(0)

  seek()函数回到文件头部,因为迭代器已经访问完了文件的所有行

8. f.truncate()

  清空文件内容

  仅当以 "r+"   "rb+"    "w"   "wb" "wb+"等以可写模式打开的文件才可以执行该功能

9.  if __name__=='__main__':

  在if __name__ == "__main__":之后的语句作为模块被调用的时候,语句之后的代码不执行;

  直接使用的时候,语句之后的代码执行。通常,此语句用于模块测试中使用

    参考:http://keliang.blog.51cto.com/3359430/649318

  

Python —— 批量替换指定目录下的所有文件中指定字符串的更多相关文章

  1. python之查询指定目录下的最新文件

    使用os模块查询指定目录下的最新文件 import os # 输入目录路径,输出最新文件完整路径 def find_new_file(dir): '''查找目录下最新的文件''' file_lists ...

  2. [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. linux复制指定目录下的全部文件到另一个目录中

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

  4. c# 获取指定目录下的所有文件并显示在网页上

    参考文献: FileInfo 的使用  https://msdn.microsoft.com/zh-cn/library/system.io.fileinfo_methods(v=vs.110).as ...

  5. php获取指定目录下的所有文件列表

    在我们实际的开发需求中,经常用到操作文件,今天就讲一下关于获取指定目录下的所有文件的几种常用方法: 1.scandir()函数 scandir() 函数返回指定目录中的文件和目录的数组. scandi ...

  6. java压缩指定目录下的所有文件和文件夹的代码

    将代码过程较好的代码段备份一下,下边资料是关于java压缩指定目录下的所有文件和文件夹的代码,希望对码农有帮助. String sourceDir="E:\test";int pa ...

  7. 微软BI 之SSIS 系列 - 在 SSIS 中将指定目录下的所有文件分类输出到不同文件夹

    开篇介绍 比如有这样的一个需求,旧的一个业务系统通常将产出的文件输出到同一个指定的目录下的不同子目录,输出的文件类型有 XML,EXCEL, TXT 这些不同后缀的文件.现在需要在 SSIS 中将它们 ...

  8. linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

  9. C# 删除指定目录下的所有文件及文件夹

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

随机推荐

  1. spring Multiple MongoTemplate

    <!-- 数据环境配置 --> <mongo:repositories base-package="com.my9yu.manager.module.server.repo ...

  2. windows ce.net开发概述

    依据开发所处的层次以及开发工具的不同,能够将嵌入式系统开发分为系统开发和应用开发. 系统开发所涉及的内容包含三个方面:系统定制.驱动程序开发.操作系统一致(BSP开发). 一系统开发 (1)      ...

  3. SharePoint 2013 对话框

    The quick way to open a sharepoint 2013 dialog modal form is via Javascript below 1 2 3 4 5 function ...

  4. 点击出现黑色背景的解决:-webkit-tap-highlight-color:rgba(0,0,0,0)

    在手机上(iphone)点击按钮的时候,屏幕总会闪动一下,这让页面看起来很不友好也不流畅.解决方案加了一句css就解决了: -webkit-tap-highlight-color:rgba(0,0,0 ...

  5. web 表单方式上传文件方法(不用flash插件)

    原理:使用表单的input type="file"标签,通过ajax提交表单请求,后台获取请求中的文件信息,进行文件保存操作 由于我测试用的做了一个上传文件和上传图片方法,所以我有 ...

  6. 33:字符统计SumOfCharactors

    题目描述:如果统计的个数相同,则按照ASII码由小到大排序输出 .如果有其他字符,则对这些字符不用进行统计. 实现以下接口: 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用) ...

  7. NativeBase自定义组件样式

    http://nativebase.io/docs/v0.5.13/customize#themingNativeBaseApp 对于NativeBase中的组件,我们可以根据实际需要来进行自定义组件 ...

  8. eval(function(p,a,c,k,e,d){e=function(c)加解密

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. View数据呈现相关技术

    一.了解Razor语法 1.Razor基本语法 a)输出单一变量时不需要加分号做结尾.如: <p>现在时刻:@DateTime.Now</p> b)输出一段含有空白字元或运算子 ...

  10. YII框架学习(二)

    YII框架的增删改查 例:一个新闻表的增删改查: (1)首先使用gii工具生成控制器和模型 (2)控制器 <?php class NewsController extends Controlle ...