免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1647 | 回复: 5
打印 上一主题 下一主题

求助怎么根据一个列表将对应列表中的文件找到并移动到指定位置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-17 23:10 |只看该作者 |倒序浏览
有两个列表l1.txt和l2.txt
l2中内容:
E:\ksv145\san105\Kinkiのやる气まんまん_164_48988_1.M2X4
E:\ksv145\san804\夜のめぐり逢い_164_45982_1.M2X4
E:\ksv145\san014\夜のフェり—ボ—ト_164_48967_1.M2X4
E:\ksv145\san704\夜雾よ今夜もありがと_164_48970_1.M2X4
E:\ksv145\san004\夜雾よ今夜も有难う_164_48971_1.M1X4
E:\ksv123\san094\大阪すずめ_164_38434_1.VOX4
E:\ksv167\san004\大阪ラプソデイ—_164_47372_1.VOX4
E:\ksv145\san404\天下第一流_164_35249_1.M2X4
E:\ksv189\san304\天与地_164_13876_1.M2X4
E:\ksv145\san104\天之美_164_13882_1.M1X4
E:\ksv122\san014\天佑我们_164_24955_1.VOX4
l1中内容:
_164_48988_1
_164_48945_1
_164_45982_1
_164_48944_1
_164_48967_1
_164_48943_1
_164_48970_1
_164_48938_1
_164_48971_1
_164_38434_1
_164_47372_1
_164_48936_1
_164_35249_1
_164_13876_1
_164_13882_1
_164_24955_1
怎么样能根据l1中提供的列表将l2中对应文件的路径找到,并且移动到e:\mkv的目录下,求高人指点。我写的两个循环老是对比

出错。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-08-17 23:55 |只看该作者
本帖最后由 linux_c_py_php 于 2012-08-17 23:57 编辑
  1. # -*- coding:gb2312 -*-

  2. import re
  3. import os

  4. def rename_files_ref_list(name_file, path_file, dest_path):
  5.     try:
  6.         with open(name_file) as name_strm:
  7.             name_list = name_strm.readlines()
  8.             name_list = [name.strip() for name in name_list]
  9.     except:
  10.         name_list = []
  11.         
  12.     try:
  13.         with open(path_file) as path_strm:
  14.             path_list = path_strm.readlines()
  15.         path_dict = {}
  16.         for path in path_list:
  17.             base_name = os.path.basename(path)
  18.             match = re.search(r'(_\d+_\d+_\d+)\.\w+, base_name)
  19.             if match:
  20.                 name = match.group(1)
  21.                 path_dict[name] = base_name
  22.     except:
  23.         path_dict = {}
  24.    
  25.     for name in name_list:
  26.         if name in path_dict:
  27.             print dest_path + "\\" + path_dict[name]
  28.             
  29. rename_files_ref_list("E:\\a.txt", "E:\\b.txt", "E:\\mkv")
复制代码

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-08-18 00:07 |只看该作者
本帖最后由 linux_c_py_php 于 2012-08-18 00:08 编辑

# -*- coding:gb2312 -*-

import re
import os

def rename_files_ref_list(name_file, path_file, dest_path):
    try:
        with open(name_file) as name_strm:
            name_list = name_strm.readlines()
            name_list = [name.strip() for name in name_list]
    except:
        name_list = []
        
    try:
        with open(path_file) as path_strm:
            path_list = path_strm.readlines()
        path_dict = {}
        for path in path_list:
            base_name = os.path.basename(path)
            match = re.search(r'(_\d+_\d+_\d+)\.\w+$', base_name)
            if match:
                name = match.group(1)
                path_dict[name] = (path, base_name)
    except:
        path_dict = {}
   
    for name in name_list:
        if name in path_dict:
            print "os.rename('" + path_dict[name][0] + "', '" + dest_path + "\\" + path_dict[name][1] + "')"
            #os.rename(path_dict[name][0], dest_path + "\\" + path_dict[name][1])
            
rename_files_ref_list("E:\\a.txt", "E:\\b.txt", "E:\\mkv")





os.rename('E:\ksv145\san105\Kinkiのやる气まんまん_164_48988_1.M2X4
', 'E:\mkv\Kinkiのやる气まんまん_164_48988_1.M2X4
')
os.rename('E:\ksv145\san804\夜のめぐり逢い_164_45982_1.M2X4
', 'E:\mkv\夜のめぐり逢い_164_45982_1.M2X4
')
os.rename('E:\ksv145\san014\夜のフェり―ボ―ト_164_48967_1.M2X4
', 'E:\mkv\夜のフェり―ボ―ト_164_48967_1.M2X4
')
os.rename('E:\ksv145\san704\夜雾よ今夜もありがと_164_48970_1.M2X4
', 'E:\mkv\夜雾よ今夜もありがと_164_48970_1.M2X4
')
os.rename('E:\ksv145\san004\夜雾よ今夜も有难う_164_48971_1.M1X4
', 'E:\mkv\夜雾よ今夜も有难う_164_48971_1.M1X4
')
os.rename('E:\ksv123\san094\大阪すずめ_164_38434_1.VOX4
', 'E:\mkv\大阪すずめ_164_38434_1.VOX4
')
os.rename('E:\ksv167\san004\大阪ラプソデイ―_164_47372_1.VOX4
', 'E:\mkv\大阪ラプソデイ―_164_47372_1.VOX4
')
os.rename('E:\ksv145\san404\天下第一流_164_35249_1.M2X4
', 'E:\mkv\天下第一流_164_35249_1.M2X4
')
os.rename('E:\ksv189\san304\天与地_164_13876_1.M2X4
', 'E:\mkv\天与地_164_13876_1.M2X4
')
os.rename('E:\ksv145\san104\天之美_164_13882_1.M1X4
', 'E:\mkv\天之美_164_13882_1.M1X4
')
os.rename('E:\ksv122\san014\天佑我们_164_24955_1.VOX4', 'E:\mkv\天佑我们_164_24955_1.VOX4')

论坛徽章:
0
4 [报告]
发表于 2012-08-18 11:33 |只看该作者
谢谢楼上的热心朋友,看明白了点我写的脚本出的问题了,不会正则表达式,所以字符串对比这里出问题了。另外问下,每次python都会自动增加一个换行符进去,我只知道strip的函数能处理,有什么其他方法可以处理掉?望指点下。谢谢!

论坛徽章:
0
5 [报告]
发表于 2012-08-20 14:37 |只看该作者
打印了几次日志终于知道是怎么回事了,发现自己原来搞错了很多东西。非常感谢linux_c_py_php的帮忙。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
6 [报告]
发表于 2012-08-20 15:10 |只看该作者
不用客气
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP