作者doghib (lun)
看板EZsoft
标题Re: [请问] 自动建立资料夹归档软体
时间Fri Aug 8 20:38:21 2008
照原PO第一篇的例子,在Python里面可以这样做:
import re
li = ['1_1_1_1 - 20080807.a', '1_1_1_1 - 20080807.b', '1_1_1_1 - 20080807.c',
'1_1_1_1 - 20080808.a', '1_1_1_1 - 20080808.b', '1_1_1_1 - 20080808.c',
'1_1_1_2 - 20080807.a', '1_1_1_2 - 20080807.b', '1_1_1_2 - 20080807.c',
'1_1_1_2 - 20080808.a', '1_1_1_2 - 20080808.b', '1_1_1_2 - 20080808.c']
#制定规则
pattern = re.compile('^(\d*_\d*_\d*_\d*)(.*)')
d = {}
for item in li:
group = pattern.search(item).groups()
if group[0] not in d.keys():
d[group[0]] = []
d[group[0]].append(item)
d 里面的结果会是这个样子,
d['1_1_1_1']:
1_1_1_1 - 20080807.a
1_1_1_1 - 20080807.b
1_1_1_1 - 20080807.c
1_1_1_1 - 20080808.a
1_1_1_1 - 20080808.b
1_1_1_1 - 20080808.c
d['1_1_1_2']:
1_1_1_2 - 20080807.a
1_1_1_2 - 20080807.b
1_1_1_2 - 20080807.c
1_1_1_2 - 20080808.a
1_1_1_2 - 20080808.b
1_1_1_2 - 20080808.c
d 的 key 就是资料夹名称, value 则是档案名称。
--------------------------------------------------------------------------
获得资料夹内容:
import os
os.listdir('C:\\')
或是
import os
import glob
os.chdir('C:\\')
glob.glob('*')
会传回C巢目录下的档案,glob可以指定档名内容,比如说你要找MP3档案,
你应该打 glob.glob('*.mp3')
建立资料夹
import os
os.mkdir(path)
移动档案:
import shutil
#move(原路径, 新路径)
shutil.move(r'C:\123.txt', r'D:\)
-----------------------------------------------------------------------------
所以真正的作法应该是,
import os
import shutil
import re
#获得资料夹内容
li = os.listdir('C:\\')
#制定规则
pattern = re.compile('^(\d*_\d*_\d*_\d*)(.*)')
#找出index,如1_1_1_1、1_1_1_2
for item in li:
group = pattern.search(item).groups()
if group[0] not in d.keys():
d[group[0]] = []
d[group[0]].append(item)
for index in d.keys():
os.mkdir('C:\\' + index)
for name in d[index]:
shutil.move('C:\\' + name, 'C:\\' + index)
如此一来,方可完成,当然这只是一个简单的范例,
如果想要有弹性点,还要制定更好的规则 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.127.45.34
1F:→ lianteh:颇高段...还在理解中 :p 还是很感谢 辛苦了 08/11 09:57