【python处理】把数据库中model_id相同的语音文件移动到名字为model_id的文件中

          写得第一个python小程序,感觉还挺方便,话不多说,上代码。

          需求: 

 数据库voice_record中字段model_id相同的语音文件记录会用于同一个建模,为了方便处理,需要把model_id相同的语音文件放在一个文件夹中以方便处理,文件夹名为model_id。

          解决步骤:

         1.  从数据库中把model_id和url这两列导出到voice.sql

                      select model_id,url from voice_record into outfile '/home/cheyunlong/mysql/voice.sql'

                  (这儿的导出路径应该是MySQL有权限的文件夹)

                  导出的文件如下:

                  

           2. (这一步操作其实可以省略掉,但是已经做了,就只好继续啦)把所有文件复制到一个文件夹里

                 (1)备份voice.sql文件

                            cp voice.sql ./voice_bak.sql

                    (2) 用awk命令把原文件第一列和第三列替换,并把结果输出到cp_voice.sh

                           awk '{print "cp",$s2,"/data/cheyunlong/sql/"}'  voice_bak.sql  > /data/cheyunlong/sql/cp_voice.sh

                          结果如下:

                           

                    (3) 给cp_voice.sh授权并执行  cp_voice.sh

                           chmod 755 cp_voice.sh

                           bash ./cp_voice.sh

                   此时会把所有需要的文件都复制到一个文件夹

            3.  (这一步操作时本想请教策爷帮忙写一个脚本直接运行,策爷答复是用Python些会容易些)按照model_id建立文件夹并把相应的文件放到同一个文件夹下。

                    建classify.py : vim classify.py                  

import os
import shutil

basepath = '/data/cheyunlong/_20170117/test_python'
init_base_path = '/data/cheyunlong/_20170117/test'
for f in open("/data/cheyunlong/_20170117/sql/voice.sql"):
      line = f.strip().split()
      basename = line[0]
      url = line[1].split("/")[6];
      needcp = line[1]
      folder = os.path.join(basepath,basename)
      fileurl = os.path.join(init_base_path,url)
      filename = os.path.join(folder,needcp)
      if  os.path.exists(folder):
        print("hi,bye")
      else:
        os.mkdir(folder)
      if os.path.exists(fileurl):
          shutil.copy(fileurl,folder)
      else:
         print("file not exists")
           

      运行python文件:

             python3 ./classify.py

             

   分类完成。                  


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值