2015-10-07 57 views
3

我试图匹配文件夹中的所有文件名,并将它们放到与文件名称相关的单独文件夹中。这里有一个例子:python匹配文件名并放在一个文件夹中

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 

我想组这些文件放到一个文件夹,用文件夹名是

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位..

回答

1

如果您正在寻找提取此:

2015-05-14#7449618a-f819-4d71-83ad-a1e4c2fe9bc1

你可以抓住你想要更容易简单地用点分割的文件夹名称splitextos.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

我是看着您的个人资料昨晚,当谈到回答Python时,你是一个野兽:) – Anekdotin

+0

我不会说一个野兽......我只是试图回答我可以。尽管如此:P – idjaw

1

我认为你会过得更好与运行:

file.rsplit(".",1)[0] 

这将让你使用你的目录的路径名。
之所以使用rsplit而不是split是以防万一您的文件名有超过一个句号在他们
需要注意的是,你可以达到同样的结果:

file.rpartition(".")[0] 
相关问题