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批量复制并且重命名文件

用的是python 3.6.0版本, 操作系统是windows10 # -*- coding: gbk -*- #拷贝文件并且按照规则重命名 #命名规则:给定前缀或者后缀  添加编号 import...

Python同目录文件批量重命名

Python同目录文件批量重命名

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

python scp 批量同步文件

下面脚本用于将源主机列表路径下的所有文件同步于目标主机的/tmp下面#!/usr/bin/python # -*- coding:utf-8 -*-import pexpect import os i...

Python3批量移动指定文件到指定文件夹

引言某人需求:以某excel中姓名信息为名建立一系列文件夹,分别将四个文件夹中与人名对应的文件汇总到该人名对应的文件夹中,共近200人,手工处理费时费力。 需求分解: 从excel中提取代...
  • lm409
  • lm409
  • 2017-07-19 22:36
  • 277

python 从文件读写,mysql批量插入数据

python 从文件读写,mysql批量插入数据

python脚本编程:批量复制或删除文件

批量复制或者删除文件,(复制+删除)就等于移动,呵呵代码#coding=utf-8 import os import shutil #递归复制文件夹内的文件 def copyFiles(sourceD...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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