如何在我解压缩的子文件夹中搜索文件?

时间:2019-05-27 19:11:52

标签: python linux python-2.7 scripting

我正在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)

有什么主意我能做到吗?

1 个答案:

答案 0 :(得分:0)

问题是sed不进行递归。尽管您的代码存在其他潜在问题(这有点冗长,而且我不知道您的环境),但这应该可以解决问题-将find与sed结合使用:

final_command= 'find ' + "/tmp" + ' -type f  -exec sed -i \'s/'+"test"+'/'+"testing"+'/g\' {} \\;'