我在一个目录中有一堆文件,我想将它们组织在子目录中。
此目录结构(哪个文件将进入哪个目录)在文件列表中指定,如下所示:
目录:音乐\
-> 01-some_song1.mp3
-> 02-some_song2.mp3
-> 03-some_song3.mp3
目录:图像\
-> 01-some_image1.jpg
-> 02-some_image2.jpg
......................
我正在考虑提取数据(目录名和文件名)并将其存储在如下所示的字典中:
dictionary = {'Music': (01-some_song1.mp3, 02-some_song2.mp3,
03-some_song3.mp3),
'Images': (01-some_image1.jpg, 02-some_image2.jpg),
......................................................
}
之后,我将复制/移动文件到各自的目录中。
我已经提取了目录名称并创建了空目录。
对于字典值,我尝试通过执行以下操作来获取列表的列表:
def get_values(file):
values = []
tmp = []
pattern = re.compile(r'^-> (.+?)$')
for line in file:
if line.strip().startswith('->'):
match = re.search(pattern, line.strip())
if match:
tmp.append(match.group(1))
elif line.strip().startswith('Directory'):
values.append(tmp)
del tmp[:]
return values
这似乎不起作用。 values
列表中的每个列表一遍又一遍地包含相同的 4 个文件名。
我做错了什么?
我还想知道完成这一切的其他方法是什么?我确信有更好/更简单/更干净的方法。
最佳答案
不需要使用正则表达式
d = {}
for line in open("file"):
line=line.strip()
if line.endswith("\\"):
directory = line.split(":")[-1].strip().replace("\\","")
d.setdefault(directory,[])
if line.startswith("->"):
song=line.split(" ")[-1]
d[directory].append(song)
print d
输出
# python python.py
{'Images': ['01-some_image1.jpg', '02-some_image2.jpg'], 'Music': ['01-some_song1.mp3', '02-some_song2.mp3', '03-some_song3.mp3']}
关于python - 使用 python 将文件复制到文件列表中指定的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281944/