Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用文件名对文件夹中的文件进行排序_Python_Sorting - Fatal编程技术网

如何在python中使用文件名对文件夹中的文件进行排序

如何在python中使用文件名对文件夹中的文件进行排序,python,sorting,Python,Sorting,我正在尝试对一些扩展名为.sim的模拟文件进行排序。目前,我有以下代码: import os import re files = [f for f in os.listdir('.') if re.match(r'.*\.sim', f)] print(files) 当我运行代码时,会得到以下结果: ['Yunlin_Shorepull_South_Current_1.8_Wind_0.sim', 'Yunlin_Shorepull_South_Current_1.8_Wind_0_

我正在尝试对一些扩展名为.sim的模拟文件进行排序。目前,我有以下代码:

import os
import re


files = [f for f in os.listdir('.') if re.match(r'.*\.sim', f)]

print(files) 
当我运行代码时,会得到以下结果:

['Yunlin_Shorepull_South_Current_1.8_Wind_0.sim', 
'Yunlin_Shorepull_South_Current_1.8_Wind_0_Relocated.sim', 
'Yunlin_Shorepull_South_Current_1.8_Wind_1.sim', 
'Yunlin_Shorepull_South_Current_1.8_Wind_10.sim', 
'Yunlin_Shorepull_South_Current_1.8_Wind_10_Relocated.sim', 
'Yunlin_Shorepull_South_Current_1.8_Wind_11.sim', ...]


请张贴代码而不是图片。这是否回答了您的问题?如何按文件名和文件名中的一些数字对文件进行排序?这是运行上述代码的结果:[云林海岸拉流南风1.8风0.sim”,“云林海岸拉流南风1.8风0.sim”,“云林海岸拉流南风1.8风1.sim”,“云林海岸拉流南风1.8风1.sim”,“云林海岸拉流南风1.8风10.sim”,“云林海岸拉流南风1.8风10.sim”,“云林海岸拉流南风1.8风10.sim”,“云林海岸拉流南风1.8风1.11.sim”,“云林海岸拉流南风1.8风1.11我希望输出是这样的:云林海岸拉力南部海流1.8风力0.sim云林海岸拉力南部海流1.8风力1.sim云林海岸拉力南部海流1.8风力1.sim云林海岸拉力南部海流1.8风力2.sim云林海岸拉力南部海流1.8风力3.sim云林海岸拉力南部海流1.8风力0.simnt_1.8_Wind_1_Removed.sim Yunlin_Shorepull_South_Current_1.8_Wind_2_Removed.sim Yunlin_Shorepull_South_Current_1.8_Shorepull_South_Current_1.8_Wind_3_Removed.sim…运行修改后的代码后,我得到以下错误:AttributeError:'NoneType'对象没有属性'group'
import os
import re

files = [f for f in os.listdir('.') if f.endswith(".sim")]
files = ['Prefix_0.sim',
         'Prefix_1.sim',
         'Prefix_0_Relocated.sim',
         'Prefix_10.sim',
         'Prefix_11.sim',
         'Prefix_1_Relocated.sim',
         'Prefix_2_Relocated.sim',
         'Prefix_2.sim',
         'Prefix_10_Relocated.sim',
         'Prefix_12.sim',
         'Prefix_12_Relocated.sim',
         'Prefix_11_Relocated.sim',
         ]

prefix = "Prefix_"
suffix = "_Relocated.sim"
number_regex = prefix + r"(\d+)"

def extract_number(s):
    match = re.match(number_regex, s)
    return int(match.group(1))

original_files = [f for f in files if not f.endswith(suffix)]
relocated_files = [f for f in files if f.endswith(suffix)]

sorted_files = sorted(original_files, key=extract_number) + \
               sorted(relocated_files, key=extract_number)

for f in sorted_files:
    print(f)
Prefix_0.sim
Prefix_1.sim
Prefix_2.sim
Prefix_10.sim
Prefix_11.sim
Prefix_12.sim
Prefix_0_Relocated.sim
Prefix_1_Relocated.sim
Prefix_2_Relocated.sim
Prefix_10_Relocated.sim
Prefix_11_Relocated.sim
Prefix_12_Relocated.sim