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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《超市积分管理系统》该项目采用技术jsp、strust2、tomcat服务器、mysql数据库 开发工具eclipse,项目含有源码、论文、配套开发软件、软件安装教程、项目发布教程    超市会员积分管理系统主要用于实现了企业管理数据统计等。本系统结构如下:(1)网络会员管理中心界面:       会员修改密码信息模块:实现会员密码功能;       会员登陆模块:实现会员登陆功能;       会员注册模块:实现会员注册功能;       留言板模块:实现留言板留言功能(2)后台管理界面:       系统用户管理模块:实现管理员的增加、查看功能;       会员信息管理模块:实现会员信息的增加、修改、查看功能;       注册用户管理模块:实现注册用户的增加、修改、查看功能;       会员卡管理模块:实现会员卡信息的增加、查看功能;       商品销售管理模块:实现商品信息的增加、查看功能;       会员积分管理模块:实现合作公司信息的增加、查看功能;       信息统计模块:实现数据统计报表功能;       留言板模块:实现留言板信息的增加、修改、查看功能; 课程目标:    1、学会各类开发软件安装、项目导入以及项目发布,含项目源码,需求文档,配套软件等    2、该项目主要功能完善,主要用于简历项目经验丰富,以及毕业设计或者二次开发    3、提供项目源码,设计文档、数据库sql文件以及所有配套软件,按照教程即可轻松实现项目安装部署 本课程为素材版,需要实战版代码讲解教程的同学可以点击如下链接:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572JavaWeb项目实战之宿舍管理系统https://edu.csdn.net/course/detail/26721JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值