zoukankan      html  css  js  c++  java
  • Python —— 批量替换指定目录下的所有文件中指定字符串

    参考: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

      

  • 相关阅读:
    [算法学习] 单调栈
    UVA11275 3D Triangles(三维几何)
    2019CCSU11月校赛 B,G题解
    2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17)(B,D)
    2016湖南省省赛 B 有向无环图(树形dp)
    2016湖南省省赛 J 三角形和矩形(计算几何)
    JAVA 高精度小数模板
    2019湖南省赛 K 双向链表练习题(list)
    2019 字节跳动 [编程题]最大映射(贪心)
    HDU 6740 MUV LUV EXTRA(kmp原理)
  • 原文地址:https://www.cnblogs.com/-wangjiannan/p/3601175.html
Copyright © 2011-2022 走看看