利用 Python 做批量文件操作的任务

今天做了一个脚本,其目的大致是读取一系列压缩包文件(.gz),用 winrar 解压后,对每个文件进行一定的内容替换,然后另存成我们需要的文件。

# !/usr/bin/env python
#
 -*- coding: GBK -*-
#
#
 自解压日志文件,逐行替换后生成新文件
#
 Neil Chen, 2006-4-27
#
import  sys
import  urllib
import  win32api

#  压缩包所在目录
src_dir  =  r " E:/py/logreplace/src "
#  解压后的目录
extracted_dir  =  r " E:/py/logreplace/extracted "
#  处理完的文件存放目录
target_dir  =  r " E:/py/logreplace/target "
#  查找什么字符串?
find_what  =   ' GET http://www.bora.com.cn '
#  替换为什么?
replace_as_what  =   ' GET  '

#  winrar 命令的参数格式
cmd_params_template  =  r '  e -y %s %s '

raw_files 
=  urllib.os.listdir(src_dir)

#  逐一解压
for  f  in  raw_files:
    fpath 
=  src_dir  +   " // "   +  f
    
    cmd_params 
=  cmd_params_template  %  (fpath, extracted_dir  +   " // " )
    
# print cmd_params
    win32api.ShellExecute(0, None,  ' winrar.exe ' , cmd_params,  " c:// " , False)
    
extracted_files 
=  urllib.os.listdir(extracted_dir)

func 
=   lambda (x): x.replace(find_what, replace_as_what)

#  替换,生成新文件
for  f2  in  extracted_files:    
    fpath2 
=  extracted_dir  +   " // "   +  f2
    fpath3 
=  target_dir  +   " // "   +  f2
    raw_file 
=  open(fpath2,  ' r ' )    

    lines 
=  raw_file.readlines()
    new_lines 
=  [func(x)  for  x  in  lines]
    
# print len(new_lines)
    target_file  =  open(fpath3,  ' w ' )
    target_file.writelines(new_lines)
    
    raw_file.close()
    target_file.close()
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值