最近一直在做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)
分享到:
相关推荐
`os.walk(directory)`会遍历指定目录及其子目录,对于每个找到的文件,如果文件名以`.txt`(这里替换为`file_extension`)结尾,我们就打开文件读取内容,然后使用`str.replace()`方法替换旧字符串,最后将替换后的...
在Python编程中,批量修改文件名是一项常见的任务,特别是在处理大量数据或自动化工作流程时。这个大作业的目标是让你理解并实现如何通过Python脚本来实现这一功能。下面将详细介绍使用Python进行批量文件重命名的...
- **文件路径**:文件路径是计算机系统中用来定位文件或目录的字符串。它可以是相对路径(相对于当前工作目录)或绝对路径(从根目录开始)。在Windows系统中,路径通常以驱动器字母(如C:)开头,而在Unix/Linux...
以上三种方法分别展示了如何使用Python递归地遍历文件夹、删除特定文件夹以及查找包含特定字符串的文本文件。这些技巧对于自动化文件管理和搜索非常有用,尤其适合需要频繁处理大量文件的场景。
在IT领域,遍历文件夹并统计文件名中的字符...总之,遍历文件夹统计文件名涉及的知识点包括文件系统操作、字符串处理、字符编码理解和编程语言特性。理解并掌握这些知识,对于编写高效且跨平台的文件管理工具至关重要。
"多文件中字符串查找工具"就是这样的一个实用程序,它能够帮助用户快速、高效地在大量的文本文件中搜索特定的字符串。这个工具的使用极大地提高了工作效率,避免了手动逐个文件检查的繁琐过程。 首先,我们要理解的...
重命名规则可以根据实际需求定制,比如替换文件名中的特定字符串、添加序号等。 在提供的压缩文件中,"批量修改文件名.py"很可能就是一个实现了上述功能的脚本。我们可以假设它包含了一个读取指定目录下所有文件,...
例如,你可以用`grep "特定字符串" 文件名`来查找文件中包含指定字符串的行。如果需要在多个文件或目录中查找,可以使用通配符或者递归选项。`grep`还有许多其他高级功能,比如忽略大小写、反向匹配、只显示不匹配的...
在实际操作中,我们可能会遇到文件名中含有特殊字符或空格的情况,所以在移动文件之前需要对文件名进行一些处理,以避免在路径字符串中产生问题。这需要使用字符串处理的相关功能来完成。 通过以上的步骤,我们可以...
- `write(str)`写入字符串,返回写入的字节数。 - `writelines(lines)`写入列表中的每一项,不自动换行。 文件对象还提供了一些其他方法,如`close()`关闭文件,`flush()`刷新缓冲区,`__next__()`获取文件的下一行...
2. 数据类型选择:确保每个字段的数据类型适合所存储的信息,如路径通常为字符串,大小可以是整数或浮点数,时间戳通常是日期时间类型。 3. 索引优化:对于经常用于搜索的字段,如文件名,可以添加索引来提高查询...
- `dirpath` 是一个字符串,表示当前遍历到的文件夹路径。 - `dirnames` 是一个包含该文件夹下所有子文件夹名称的列表。 - `filenames` 是一个包含该文件夹下所有非目录子文件的列表。 **示例代码:** ```python ...
- 在比较文件名和文档内容时,我们需要对字符串进行处理,如提取关键词、分割字符串、大小写转换等。 6. **文件内容读取**: - 使用`docx`库,我们可以打开一个Word文档,然后通过`Document`类的`paragraphs`属性...
这个函数返回的是一个包含字符串的列表,每个字符串代表一个文件或子目录的名称。 ```python import os def get_top_level_files(directory): files = os.listdir(directory) return files ``` 上述代码定义了...
它返回一个字符串列表,包含所有在指定路径下的文件和目录名称,但不包括子目录中的文件,并且不包含特殊目录项'.'和'..'。如果需要获取所有文件,包括子目录中的文件,就必须使用递归方法。`os.listdir()`的语法...
程序会遍历指定目录下的所有文件,对每个文件名进行检查,如果找到匹配的字符或字符串,就进行替换操作。这个过程可以递归地应用于子目录,以确保所有嵌套的文件都被处理。 批量文件名替换的操作步骤通常包括以下几...
在Python编程中,有时我们需要执行清理操作,包括彻底删除整个文件夹及其所有子文件。这在处理临时数据、测试环境或者应用更新时尤其有用。本文将深入探讨如何使用Python的标准库来实现这一功能。 首先,Python提供...
以上代码实现了一个简单的文件按日期重命名的脚本,它会遍历指定目录及其子目录中的所有文件,根据文件的修改时间创建一个新的文件名,并进行重命名。这个过程可以帮助我们更好地管理和组织大量的文件,便于查找和...
然而,如果需要更复杂的改名规则,如替换文件名中的特定字符串,或者针对文件夹内的所有文件,我们就需要编写脚本或程序。Python 是一个非常适合此类任务的语言,其`os`和`os.path`模块提供了遍历目录和修改文件名的...
本文将深入探讨如何在Python中实现对文件夹名、文件名以及文件内容中的关键字进行查找和替换。这个话题涉及到的知识点包括文件系统操作、文本处理和递归算法。 首先,我们要了解Python的`os`和`os.path`模块,它们...