【发布时间】:2011-05-11 11:44:23
【问题描述】:
我想递归搜索带有文本文件子目录的目录,并用多行字符串的内容替换文件中每次出现的 {$replace}。用python如何实现?
[编辑]
到目前为止,我只有使用 os.walk 的递归代码来获取需要更改的文件列表。
import os
import sys
fileList = []
rootdir = "C:\\test"
for root, subFolders, files in os.walk(rootdir):
if subFolders != ".svn":
for file in files:
fileParts = file.split('.')
if len(fileParts) > 1:
if fileParts[1] == "php":
fileList.append(os.path.join(root,file))
print fileList
【问题讨论】:
-
如果您告诉我们您目前的情况,我们将更有可能提供帮助。
-
为什么需要为此使用 Python?在我看来,
find和sed的组合会更优雅地完成这项工作。 developmentality.wordpress.com/2010/09/07/… 基本上,find . -type f -exec sed -i '.bk' 's/search regexp/replacement string/g' {} \;(尚未测试,但我认为这是正确的语法) -
@I82Much - 但您的解决方案需要学习 sed。如果 OP 已经了解基本 Python,并且不痴迷于学习新工具(更喜欢掌握现有工具),那么用 Python 解决任务更有意义。
-
@I82Much:
c:\test可能是原因之一(Windows)。find /c/test -type d -path \*/.svn -prune -o -type f -name \*.php -exec sed -i 's/{\$replace}/multiline\nstring/g' {} +shell 命令接近于this Python code
标签: python