1

我是 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]​​ 并创建一个新列表或改变这个列表,但我不知道该怎么做。

ps 我刚刚发布了代码的第一部分,谢谢! 这个奇怪的部分 看起来更好

这就是我希望它看起来的样子,但已排序且没有 eq* 文件。 想要这个排序

4

3 回答 3

1

只需sort与排序键一起使用:(os.path.basename仅提取文件的基本名称以执行排序):

import os, glob
list1 = sorted(glob.glob('*/FEP_SYAF014*/FEP1/298/*/*.dcd'), key = os.path.basename)
于 2018-09-04T13:07:18.740 回答
0

所以这行得通。我刚刚添加了 del filename1[:5] 以摆脱其他不必要的字符串部分 import os, glob list1 = sorted(glob.glob(' /FEP_SYAF014 /FEP1/298/ / .dcd'), key = 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
于 2018-09-04T13:34:06.780 回答
0

您的排序功能适用于文件名部分。这不是你想要的。如果我理解得很好,您想对文件名列表进行排序,而不是对文件名的部分进行排序。

Jean François 给出的代码很棒,但我猜你想让自己的代码工作。

您需要仅使用拆分的最后一部分来提取文件名

拆分返回字符串列表。每个项目都是原件的一部分。

文件名 = 文件名.split ('/')[len (filename.split ('/'))-1]

这一行将为您提供拆分的最后一部分然后您可以将该部分添加到您的列表中毕竟您可以对列表进行排序

希望这可以帮助!

于 2018-09-05T06:16:49.260 回答