参考: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. Discussion about z pre-pass

    Z pre-pass In the rendering Process, the first pass render to a depth buffer to get the front layer ...

  2. ElasticSearch命令增加字段总结

    1.建立一个String类型的字段 curl -XPUT http://192.168.46.163:9200/t_risk_case/_mapping/t_risk_case?pretty -d ' ...

  3. 数据结构之---C语言实现图的数组(邻接矩阵)存储表示

    //图的数组(邻接矩阵)存储表示 #include <stdio.h> #include <stdlib.h> #define MAX_VEX_NUM 50 typedef c ...

  4. 我用select做多路复用踩到的坑

    既然说是用select踩到的坑,那么就先直接贴一段使用select的代码上来瞅一下: bool SocketAction(int fd, const char* buf, size_t len, ui ...

  5. maven springmvc-hibernate搭建以及源码下载

    见:https://blog.csdn.net/fengshizty/article/details/43635305 下载源码参见:http://www.cnblogs.com/ljy2013/p/ ...

  6. docker创建私有仓库及存储image

    Docker官方的Docker hub尽管提供了有非常多image,也基本上包括了我们须要使用的,可是其訪问起来比較慢.假设自己要定制image.多台server之间的共享使用此image非常不方便. ...

  7. matlab-2

    function varargout = gmm(X, K_or_centroids) % ====================================================== ...

  8. 【转载】ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘

    开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...

  9. 12306 外包给阿里巴巴、IBM 等大企业做是否可行?

    知乎上看到的,转载过来,雅俗共赏 12306首秀被骂的狗血喷头后铁道部找来IBM.阿里巴巴等大企业要解决方式,给出的条件是资金管够可是问题得解决. 几大企业最后都拒绝了(当中阿里巴巴最后负责了排队系统 ...

  10. 小白学习python之路(二):安装开发工具

    引言 上一章我们安装配置了python3.7,这一章我们安装python的开发工具,我用的pycharm2019 安装 工具连接:https://u20538204.ctfile.com/fs/205 ...