我是Python的初学者,我一直在编写代码来访问两种类型的文件(dcd和inp文件),将它们组合在一起并使用匹配的字符串创建一个新列表。
一开始我被困在某个地方。我想在这里获取所有的dcd文件。因此,它们具有.dcd扩展名,但第一部分并不相同。所以我在想,在分割字符串之后是否可以访问它们。
#collect all dcd files into a list
list1 = []
for filename1 in glob.glob('*/FEP_SYAF014*/FEP1/298/*/*.dcd'):
filename1 = filename1.split('/')
filename1.sort()
list1.append(filename1)
我只想获取带有dcd扩展名且被索引为[5]的名称,并创建一个新列表或对该列表进行变异,但是我不确定该怎么做。
p.s我刚刚发布了代码的第一部分 谢谢 ! the oddly sorted part this one looks better
这就是我希望的样子,但是经过排序且没有eq *文件。 want this sorted
答案 0 :(得分:1)
只需将sort
与排序键一起使用:os.path.basename
(仅提取文件的基本名称以执行排序):
import os, glob
list1 = sorted(glob.glob('*/FEP_SYAF014*/FEP1/298/*/*.dcd'), key = os.path.basename)
答案 1 :(得分:0)
因此可行。我刚刚添加了del filename1 [:5]以摆脱其他不必要的字符串部分 导入os,glob list1 =已排序(glob.glob(' / FEP_SYAF014 / FEP1 / 298 / / .dcd'),键= os.path.basename)
for filename1 in sorted(glob.glob('*/FEP_SYAF014 */FEP1/298/*/*.dcd'),key = os.path.basename):
filename1 = filename1.split('/')
filename1.sort()
list1.append(filename1)
del filename1[:5]
print filename1
答案 2 :(得分:0)
您的排序功能应用于文件名部分。这不是您想要的。据我了解,您想对文件名列表进行排序,而不是对文件名的各个部分进行排序。
让·弗朗索瓦(JeanFrançois)给出的代码很棒,但我想您想使自己的代码生效。
您只需要使用拆分的最后一部分来提取文件名
拆分将返回字符串列表。每个项目都是原始文件的一部分。
filename = filename.split('/')[len(filename.split('/'))-1]
此行将为您提供拆分的最后一部分 然后,您可以将该部分添加到列表中 毕竟,您可以对列表进行排序
希望这会有所帮助!