C# /C++/ python 按文件名排序

博客介绍了按文件名对Coin0.bin - Coin21.bin文件排序的方法,分别给出了C#、C++和Python的实现代码。通过不同语言的代码示例,展示了如何获取文件列表并按特定规则排序,以实现文件名排序的功能。

目的:Coin0.bin Coin1.bin Coin2.bin Coin3.bin … Coin21.bin 按文件名排序

 

1.C#实现

    class Program
    {

        public static int cmp(string name)
        {
            int length = name.IndexOf(".bin") - name.IndexOf("Coin") - 4;
            string str_crap = name.Substring(name.IndexOf("Coin") + 4, length);
            return Convert.ToInt32(str_crap);
        }
        static void Main(string[] args)
        {
            string Folder = "";\\文件地址
            DirectoryInfo theFolder = new DirectoryInfo(Folder);
            FileInfo[] fileInfo = theFolder.GetFiles("*.bin");//文件后缀
          List<string> fileList = new List<string>();
           foreach (var item in fileInfo)
           {
               //获取文件名
               fileList.Add(item.FullName);
          }           
           fileList = fileList.OrderBy(o => cmp(o)).ToList();
           foreach (var i in fileList)
           {
               Console.WriteLine(i);
           }
       }
   }

2.C++ 实现

#include <io.h>  
#include <fstream>  
#include <string>  
#include <vector>  
#include <iostream>  
#include<algorithm>
#include<functional>  


using namespace std;
int findIndex(string a, string b, string c)
{
    int index_f, index_l;
    int index_gap;
    index_f = a.find(b) + 4;
    index_l = a.find(c);
    index_gap = index_l - index_f;
    return atoi((a.substr(index_f, index_gap)).c_str());

}
int cmp(string a, string b)
{
    int c, d;
    c = findIndex(a, "Coin", ".bin");
    d = findIndex(b, "Coin", ".bin");
    return  c < d;
}
void GetAllFormatFiles(string path, vector<string>& files, string format)//vector是一个能够存放任意类型的动态数组
{
    //文件句柄    
    long   hFile = 0;
    //文件信息    
    struct _finddata_t fileinfo;//文件结构体
    string p;
    if ((hFile = _findfirst(p.assign(path).append("\\*" + format).c_str(), &fileinfo)) != -1)
    {
        do
        {
            if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
                files.push_back(p.assign(path).append("\\").append(fileinfo.name));    //压入        
        } while (_findnext(hFile, &fileinfo) == 0);

        _findclose(hFile);
    }
}
    int main()
    {
        string filePath = "";//地址
        string format = ".bin";//文件后缀
        vector<string> files;//参数存放文件名称 
        GetAllFormatFiles(filePath, files, format);
        sort(files.begin(), files.end(), cmp);//按文件名称从小到大排序
        int size = files.size();//向量大小
        for (int i = 0; i < size; i++)
        {
               cout << files[i] << endl;
        }
    }

3.python实现
from struct import *
import binascii
import os.path,time
import sys

def indexOut(str1):
    pos_f = str1.index('Coin') + 4
    pos_l = str1.index('.bin')
    str2 = str1[pos_f:pos_l]
    i = int(str2)
    return i

def getFileList(path,endStr):

#'''获取指定目录下,指定后缀的文件列表'''
     r_list = []
     f_list = os.listdir(path)   #获取目录列表
     for i in f_list:
    # 分离文件名和后缀名,过滤掉工具脚本
         file_endStr = os.path.splitext(i)[1]#os.path.splitext('book.txt')  ('book', '.txt')
    # 判断是否是目录
         if file_endStr == endStr:
             r_list.append(path + '/' + i)

     r_list.sort(key=lambda x:indexOut(x))
     return r_list

list = getFileList("",".bin")//地址 文件后缀
file = open(list[2], 'rb')
print(file)

内容概要:本文提出一种面向高柔性柔性作业车间的混合调度优化算法——元胞邻域遗传-随机重启爬山混合调度优化算法,该算法深度融合元胞自动机的局部搜索机制与遗传算法的全局寻优能力,并创新性地引入随机重启爬山策略以增强跳出局部最优的能力,从而有效应对高柔性车间环境中工序灵活、设备多样、约束复杂的调度挑战;通过构建精细化的数学模型,算法在满足工艺顺序、资源能力等多重约束的前提下,以最小化最大完工时间等为目标,显著提升了调度方案的质量与求解效率,相关方法已通过Matlab编程实现,支持仿真实验与性能验证,为复杂制造系统的智能调度提供了理论支撑与技术路径; 适合人群:具备一定编程基础,熟悉Matlab工具,从事智能制造、工业工程、自动化或运筹优化方向的研究生、科研人员及工程技术人员; 使用场景及目标:① 解决高柔性作业车间中的复杂任务调度问题;② 提升多工序、多设备、多约束条件下生产调度的优化性能;③ 为智能优化算法在工业场景中的融合应用提供参考案例与代码实现基础; 阅读建议:建议读者结合文中提到的智能优化算法背景知识进行系统学习,重点关注元胞邻域结构设计与遗传算法的融合机制,动手运行并调试提供的Matlab代码,通过仿真实验加深对算法收敛性与调度效果的理解。
内容概要:本文系统阐述了基于CNN-SVM的混合数据分类预测方法在故障识别领域的应用,重点介绍如何将卷积神经网络(CNN)与支持向量机(SVM)相结合,以提升工业系统中故障分类的准确性与鲁棒性。该方法首先利用CNN强大的自动特征提取能力对原始高维、非平稳信号数据进行深层抽象,获取具有判别性的高级特征表示,随后将这些特征输入至SVM分类器中,充分发挥SVM在小样本、非线性分类任务中的泛化优势,从而构建出兼具深度学习强表达能力与传统机器学习高分类精度的融合模型。研究通过Matlab平台实现了完整的算法流程,涵盖数据预处理、CNN结构设计、特征提取、SVM训练与参数优化、模型评估等环节,并结合实际工业故障数据集进行了仿真实验,验证了该混合模型相较于单一模型在分类精度、稳定性及抗噪能力方面的显著提升。; 适合人群:具备一定机器学习理论基础和Matlab编程能力,从事电气工程、自动化控制、智能制造、设备状态监测等相关领域研究的研究生、工程师及科研人员,尤其适合致力于故障诊断、智能预测与工业大数据分析的技术从业者。; 使用场景及目标:①应用于旋转机械(如电机、轴承)、电力电子设备、传动系统等工业装备的多类别故障识别与状态分类;②解决传统诊断方法在复杂工况下特征提取困难、分类性能不稳定的问题,提高早期微弱故障的检出率;③为相关科研项目提供可复现的算法框架与代码实例,支撑高水平论文撰写与工程原型开发。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,深入理解CNN特征提取层(如卷积核设计、池化操作)与SVM分类器(如核函数选择、惩罚系数调优)之间的协同机制,重点关注模型超参数调优策略与交叉验证方法,进而可将该混合架构迁移至其他分类任务中,探索其在不同数据场景下的适用性与优化空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值