我试图匹配文件夹中的所有文件名,并将它们放在带有文件名的自己的单独文件夹中。下面是一个例子:
2015-05-14#6449618a-f819-4d71-83ad-a1e4c2fe9bc1.csv
2015-05-14#6449618a-f819-4d71-83ad-a1e4c2fe9bc1.xml
2015-05-14#6449618a-f819-4d71-83ad-a1e4c2fe9bc1.doc
2015-05-14#6449618a-f819-4d71-83ad-a1e4c2fe9bc1.dox
2015-05-14#7449618a-f819-4d71-83ad-a1e4c2fe9bc1.csv
2015-05-14#7459618a-f819-4d71-83ad-a1e4c2fe9bc1.xml
2015-05-14#7459618a-f819-4d71-83ad-a1e4c2fe9bc1.doc
2015-05-14#7459618a-f819-4d71-83ad-a1e4c2fe9bc1.doc
我想将这些文件分组到一个文件夹中,其中foldername为
2015-05-14#7449618a-f819-4d71-83ad-a1e4c2fe9bc1
2015-05-14#6449618a-f819-4d71-83ad-a1e4c2fe9bc1
请记住,文件夹中有数百个这样的文件,我试图让它们更整洁:)
到目前为止我得到了什么......
for file in os.listdir(src_path):
if not os.path.isdir(dest_path + file.split("-")[:11]):
os.mkdir(dest_path + file.split("-")[0])
shutil.copy(src_path + file, dest_path + file.split("-")[:11])
我的想法是匹配前11位数字。
答案 0 :(得分:1)
如果你想提取这个:
2015-05-14#7449618a-f819-4d71-83ad-a1e4c2fe9bc1
只需使用splitext
中的os.path
分割点,即可轻松获取您想要的文件夹名称:
fname, fext = os.path.splitext('2015-05-14#6449618a-f819-4d71-83ad-a1e4c2fe9bc1.csv')
fname将保留2015-05-14#7449618a-f819-4d71-83ad-a1e4c2fe9bc1
fext将保留csv
额外的信息。不要使用file
,它是Python的内置代码:https://docs.python.org/2/library/functions.html#file
这可能会导致问题。请尝试fname
或仅f
。
答案 1 :(得分:1)
我认为你最好跑步:
file.rsplit(".",1)[0]
将为您提供用于目录的路径名称
使用rsplit
而不是split
的原因是为了防止您的文件名中包含多个句号。
请注意,您可以使用以下方法获得相同的结果:
file.rpartition(".")[0]