`
brmrk
  • 浏览: 30787 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

Python递归修改文件夹、文件名、文件内容中的指定字符串

阅读更多
最近一直在做XOOPS的模块,老实说,以前没接触过PHP,也没进行过类似的接口开发,什么标准一概不知,时间又紧,写来全是随意,想到哪写到哪。居然还弄了出来。
  可是客户又提了新要求,要求重用模块,就是一个模块装两次用作不同作用,我本来以为蛮简单,试了下才知道,同一模块安装多个在xoops中是有专有叫法的,这个叫法就是模块克隆。我本以为数据库表名改掉,模板文件名改掉就好了,可是改完才发现不行。不知什么地方还有冲突。
  网上查了下,一般都是手动改,可是一个模块十几个文件夹,每个文件夹下又有1-20个不等的文件,每个php文件中几十到几百行不等,说不定还有文件夹,改来实在费劲。
  于是用python写了个小程序来跑,目的就是递归修改文件夹名、文件名、文件内容中的指定字符串,用新的去重写。写完试了下,成功。
针对特殊用途,所以文件内容只支持文本格式
import os
import re

def _rename(old,new):
    new2=''
    for i in range(0,len(new),2):
        a=new[i:i+2]
        if a!='\xa1@':
            new2+=a;
   
    print 'new name =',new2
    print 'old name =',old
    if new2!=old:
        print 'begin to rename',old,new2
        try:
            os.rename(old,new2)
        except WindowsError,e:
            if str(e)=='[Error 183] ':
                print 'already have ',new2               
            else:
                print str(e)
        
def excuepath(p,oldname,newname):
    #传递路径及两个字符串作为参数
    workdir=p
    os.chdir(workdir)
    cwd=os.getcwd()
    dirs=os.listdir(cwd)
    old=oldname
    new=newname
    for tmp in dirs:
        path=os.path.join(cwd,tmp)
        print 'path=',path
        #如果是文件,修改内容后重命名
        if os.path.isfile(path):
           #自己内部的字符串不要替换
            if tmp[-3:]!='.py':
                data = open(path).read()
                #print data              
                data = re.sub(old,new, data)
                open(path, 'wb').write(data)
                newpath=path.replace(old,new)
                _rename(path,newpath)
        #如果是路径,重命名后递归   
        elif os.path.isdir(path):
            
            newpath=path.replace(old,new)
            _rename(path,newpath)
            excuepath(newpath,old,new)
            

if __name__=='__main__':
    old='someString'
    new='newString'
    excuepath(os.path.abspath('.'),old,new)
分享到:
评论
1 楼 cityyokel 2010-02-21  
建议先看看os.path.walk( path, visit, arg) 函数怎么用吧。

相关推荐

    替换文件指定字符串

    `os.walk(directory)`会遍历指定目录及其子目录,对于每个找到的文件,如果文件名以`.txt`(这里替换为`file_extension`)结尾,我们就打开文件读取内容,然后使用`str.replace()`方法替换旧字符串,最后将替换后的...

    python批量修改文件名

    在Python编程中,批量修改文件名是一项常见的任务,特别是在处理大量数据或自动化工作流程时。这个大作业的目标是让你理解并实现如何通过Python脚本来实现这一功能。下面将详细介绍使用Python进行批量文件重命名的...

    获取指定目录下的所有文件路径及文件名

    - **文件路径**:文件路径是计算机系统中用来定位文件或目录的字符串。它可以是相对路径(相对于当前工作目录)或绝对路径(从根目录开始)。在Windows系统中,路径通常以驱动器字母(如C:)开头,而在Unix/Linux...

    Python实现递归遍历文件夹并删除文件

    以上三种方法分别展示了如何使用Python递归地遍历文件夹、删除特定文件夹以及查找包含特定字符串的文本文件。这些技巧对于自动化文件管理和搜索非常有用,尤其适合需要频繁处理大量文件的场景。

    遍历文件夹统计文件名

    在IT领域,遍历文件夹并统计文件名中的字符...总之,遍历文件夹统计文件名涉及的知识点包括文件系统操作、字符串处理、字符编码理解和编程语言特性。理解并掌握这些知识,对于编写高效且跨平台的文件管理工具至关重要。

    多文件中字符串查找工具

    "多文件中字符串查找工具"就是这样的一个实用程序,它能够帮助用户快速、高效地在大量的文本文件中搜索特定的字符串。这个工具的使用极大地提高了工作效率,避免了手动逐个文件检查的繁琐过程。 首先,我们要理解的...

    python练习_杨辉三角_python_批量修改文件名_

    重命名规则可以根据实际需求定制,比如替换文件名中的特定字符串、添加序号等。 在提供的压缩文件中,"批量修改文件名.py"很可能就是一个实现了上述功能的脚本。我们可以假设它包含了一个读取指定目录下所有文件,...

    在文件中查询特定字符串

    例如,你可以用`grep "特定字符串" 文件名`来查找文件中包含指定字符串的行。如果需要在多个文件或目录中查找,可以使用通配符或者递归选项。`grep`还有许多其他高级功能,比如忽略大小写、反向匹配、只显示不匹配的...

    Python3批量移动指定文件到指定文件夹方法示例

    在实际操作中,我们可能会遇到文件名中含有特殊字符或空格的情况,所以在移动文件之前需要对文件名进行一些处理,以避免在路径字符串中产生问题。这需要使用字符串处理的相关功能来完成。 通过以上的步骤,我们可以...

    Python文件操作(课件)

    - `write(str)`写入字符串,返回写入的字节数。 - `writelines(lines)`写入列表中的每一项,不自动换行。 文件对象还提供了一些其他方法,如`close()`关闭文件,`flush()`刷新缓冲区,`__next__()`获取文件的下一行...

    文件夹,文件录入数据库

    2. 数据类型选择:确保每个字段的数据类型适合所存储的信息,如路径通常为字符串,大小可以是整数或浮点数,时间戳通常是日期时间类型。 3. 索引优化:对于经常用于搜索的字段,如文件名,可以添加索引来提高查询...

    python如何获取当前文件夹下所有文件名详解

    - `dirpath` 是一个字符串,表示当前遍历到的文件夹路径。 - `dirnames` 是一个包含该文件夹下所有子文件夹名称的列表。 - `filenames` 是一个包含该文件夹下所有非目录子文件的列表。 **示例代码:** ```python ...

    python项目实例代码源码-Python检查word文件中的特殊标记词是否与文件名中的一致.zip

    - 在比较文件名和文档内容时,我们需要对字符串进行处理,如提取关键词、分割字符串、大小写转换等。 6. **文件内容读取**: - 使用`docx`库,我们可以打开一个Word文档,然后通过`Document`类的`paragraphs`属性...

    python提取一级目录内所有文件名,二级文件夹内的文件不提取.rar

    这个函数返回的是一个包含字符串的列表,每个字符串代表一个文件或子目录的名称。 ```python import os def get_top_level_files(directory): files = os.listdir(directory) return files ``` 上述代码定义了...

    Python 获取指定文件夹下的目录和文件的实现

    它返回一个字符串列表,包含所有在指定路径下的文件和目录名称,但不包括子目录中的文件,并且不包含特殊目录项'.'和'..'。如果需要获取所有文件,包括子目录中的文件,就必须使用递归方法。`os.listdir()`的语法...

    文件名批量修改替换

    程序会遍历指定目录下的所有文件,对每个文件名进行检查,如果找到匹配的字符或字符串,就进行替换操作。这个过程可以递归地应用于子目录,以确保所有嵌套的文件都被处理。 批量文件名替换的操作步骤通常包括以下几...

    Python彻底删除文件夹及其子文件方式

    在Python编程中,有时我们需要执行清理操作,包括彻底删除整个文件夹及其所有子文件。这在处理临时数据、测试环境或者应用更新时尤其有用。本文将深入探讨如何使用Python的标准库来实现这一功能。 首先,Python提供...

    Python实现文件按照日期命名的方法

    以上代码实现了一个简单的文件按日期重命名的脚本,它会遍历指定目录及其子目录中的所有文件,根据文件的修改时间创建一个新的文件名,并进行重命名。这个过程可以帮助我们更好地管理和组织大量的文件,便于查找和...

    批量修改文件名

    然而,如果需要更复杂的改名规则,如替换文件名中的特定字符串,或者针对文件夹内的所有文件,我们就需要编写脚本或程序。Python 是一个非常适合此类任务的语言,其`os`和`os.path`模块提供了遍历目录和修改文件名的...

    查找替换_python_文件管理_替换_

    本文将深入探讨如何在Python中实现对文件夹名、文件名以及文件内容中的关键字进行查找和替换。这个话题涉及到的知识点包括文件系统操作、文本处理和递归算法。 首先,我们要了解Python的`os`和`os.path`模块,它们...

Global site tag (gtag.js) - Google Analytics