Python 批量处理文件

原创 2017年07月13日 12:57:39

    把一个文件下有许多文件夹,并且其中每个文件中又有很多文件(每个文件夹下的文件数量并不一定相同)(如下图)。

    如1589文件夹下有三个文件(如下),但是1592文件夹下有4个文件:


    现在我想把这些文件夹下的所有音频文件,转移到一个文件夹下,并修改文件名字,如下所示:


    所以选择Python处理比较方便:

def eachFile(filepath):
    pathDir =  os.listdir(filepath)
    dic = {}
    for file_name in pathDir:
        child = os.path.join('%s/%s' % (filepath, file_name))
        doc_path = os.listdir(child)
        i = 0;
        for each_document in doc_path:
            i += 1
            tmp = os.path.join('%s/%s' % (child, each_document))
            shutil.copy(tmp, "/home/abner/Documents/world_wav")#copy tmp file to "/home/abner/Documents/world_wav"
            #rename file name
            os.rename("/home/abner/Documents/world_wav"+"/"+each_document, "/home/abner/Documents/world_wav"+"/"+file_name+"_"+str(i)+".mp3")
        dic[file_name] = i
  

    2、对于一个text文档,如下:


    我现在想修改每一行的标号,并修改成如下样式:


 可作如下处理:

    ########################################################
    #           modify the text each row                   #
    ########################################################
    utts_path = "/home/abner/Documents/world_wav/utts.data"
    write_modify_file = open("/home/abner/Documents/world_wav/Modify.data", 'w')
    with open(utts_path, 'r') as f:
        for line in f:
            stuff = re.findall('[0-9]+', line)
            get_file_name = stuff[0]
            number = int(dic[get_file_name])
            length = len(get_file_name)
            for i in range(number):
                line1 = line[0:2]+get_file_name+"_"+str(i+1)+line[2+length:]
                write_modify_file.flush()
                write_modify_file.write(line1)
    write_modify_file.close()

    all code:

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""

import os
import shutil
import numpy as np
import re

###############################################################
#      copy documents in different files to a given file      #
###############################################################

def eachFile(filepath):
    pathDir =  os.listdir(filepath)
    dic = {}
    for file_name in pathDir:
        child = os.path.join('%s/%s' % (filepath, file_name))
        doc_path = os.listdir(child)
        i = 0;
        for each_document in doc_path:
            i += 1
            tmp = os.path.join('%s/%s' % (child, each_document))
            shutil.copy(tmp, "/home/abner/Documents/world_wav")#copy tmp file to "/home/abner/Documents/world_wav"
            #rename file name
            os.rename("/home/abner/Documents/world_wav"+"/"+each_document, "/home/abner/Documents/world_wav"+"/"+file_name+"_"+str(i)+".mp3")
        dic[file_name] = i
        
    ########################################################
    #           modify the text each row                   #
    ########################################################
    utts_path = "/home/abner/Documents/world_wav/utts.data"
    write_modify_file = open("/home/abner/Documents/world_wav/Modify.data", 'w')
    with open(utts_path, 'r') as f:
        for line in f:
            stuff = re.findall('[0-9]+', line)
            get_file_name = stuff[0]
            number = int(dic[get_file_name])
            length = len(get_file_name)
            for i in range(number):
                line1 = line[0:2]+get_file_name+"_"+str(i+1)+line[2+length:]
                write_modify_file.flush()
                write_modify_file.write(line1)
    write_modify_file.close()
     
if __name__ == '__main__':
    filePath = "/home/abner/Documents/USA/word"
    eachFile(filePath)


版权声明:本文为博主原创文章,转载需注明出处。

Python 批处理文件(全)

Mission: 在学习《Building Machine Learning Systems with Python Second Edition》时(链接:http://pan.baidu.co...
  • ouening
  • ouening
  • 2017年04月21日 19:42
  • 1900

用 python 实现批处理文件

Windows下的bat, linux 下的shell 用来做批处理都很好用, 可惜不通用 用 Python 来做就简单多了, 不过一条条写代码来调用系统命令也够烦的了 程序员都很懒, 不愿做机械...
  • fanyamin
  • fanyamin
  • 2016年03月03日 23:02
  • 5157

如何使用python写批处理

如何使用python写批处理?如果不会用bat写批处理,而且bat命令太复杂,怎么办?可以使用python替代bat写批处理。...
  • Kenighto
  • Kenighto
  • 2015年10月29日 17:23
  • 5360

Python实现批量处理文件的缩进和转码问题

最近把很久前的C代码传到Github上的时候,发现全部上百个源文件的代码缩进都变成了8格,而且里面的中文都出现了乱码,所以决定写个程序来批量处理所有文件的格式。 问题分析 缩进问题是因为在之前...
  • zhayujie5200
  • zhayujie5200
  • 2017年12月06日 22:35
  • 80

亲自实测python文件批量爬取下载大量美女图片!

  • 2017年12月20日 17:33
  • 842B
  • 下载

文件批量重命名/python2.7.3/

  • 2014年08月08日 09:58
  • 719B
  • 下载

python批量解压RAR文件

  • 2013年08月08日 12:40
  • 499B
  • 下载

python实现批量查找.py文件中的关键词

  • 2014年11月19日 14:36
  • 688B
  • 下载

python批量添加文件头注释

  • 2014年08月08日 10:11
  • 4KB
  • 下载

python︱批量操作文件(os)、图片操作技巧(下载网络图片、skimage.io)

数据量大了,什么情况都有可能会发生。 .一、遍历操作文件1、文件名字获取相关帖子: 一句python,一句R︱模块导入与查看、数据读写出入、数据查看函数、数据类型、遍历文件 os.listdir...
  • sinat_26917383
  • sinat_26917383
  • 2017年03月06日 19:05
  • 3996
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python 批量处理文件
举报原因:
原因补充:

(最多只允许输入30个字)