我正在python 2.7中执行一个脚本来解压缩rar文件,一旦解压缩了这些文件,它将在文件夹中查找文本文件以替换文本中找到的文本,例如用“你好,你好”说“大家好”。
我的问题是我找不到在解压缩的子文件夹中搜索文件的方法;它仅在目录的第一级搜索并替换
import os, sys
from os import walk
import subprocess
import shutil
import string
def sed(path, dest, source):
finalCommand= 'sed -i \'s/'+source+'/'+dest+'/g\' ' + path + "/*"
os.system(finalCommand)
def ejecutarsed(archivo,path):
""" read file and iterate """
for line in archivo:
lineInfo = line.split(",")
urlOrg = lineInfo[0].strip()
urlDes = lineInfo[1].strip()
sed(path,urlDes,urlOrg)
def uncompressAndRepackWar(source_path,tmp_dir_name,archivo):
abs_source_path = os.path.abspath(source_path+"/"+tmp_dir_name)
bash_exec([
'rar', 'xvf', abs_source_path
])
# Execute the function
ejecutarsed(archivo,path)
for path, subdirs, files in os.walk(abs_tmp_dir):
for name in files:
asw = os.path.join(path, name)
# Recursive function
uncompressAndRepackWar(path,name,archivo)
if __name__ == "__main__":
if len(sys.argv) < 2:
raise Exception("must provide path!")
fileReaded = open(sys.argv[3])
uncompressAndRepackWar(sys.argv[1],sys.argv[2],fileReaded)
有什么主意我能做到吗?
答案 0 :(得分:0)
问题是sed
不进行递归。尽管您的代码存在其他潜在问题(这有点冗长,而且我不知道您的环境),但这应该可以解决问题-将find
与sed结合使用:
final_command= 'find ' + "/tmp" + ' -type f -exec sed -i \'s/'+"test"+'/'+"testing"+'/g\' {} \\;'