去注释去空格行,将1.txt文本内容计算结果写入2.txt文本

去注释去空格行

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace 去处注释行
{
    class Program
    {
        static void ReadFileInfo(string path,List<string> info)  //定义读取静态方法(路径,动态数组)
        {
            string str = string.Empty;  //Empty是空字符串  用来临时读取文件内容
            using(StreamReader reader = new StreamReader(path,Encoding.UTF8))
            {
                while((str = reader.ReadLine()) != null)  //一次读取一行 一直循环 直到为空不循环
                {
                    if(!string.IsNullOrEmpty(str))  //既不是空引用也不是空字符串
                    {
                        if(str.Trim().Length != 0)  //去除首尾空格 str长度 !=0
                        {
                            if(str.IndexOf("//") != 0) //判断有//  但有多种情况
                            {
                                if(str.IndexOf("//") != -1 && !str.Contains('"')) //判断能查找到//  但不包含"//"
                                {
                                    str = str.Substring(0, str.IndexOf("//")); //截取0到str.IndexOf("//")的str
                                    if(str.Trim().Length != 0) //重新赋值的str去除首尾空格的长度 !=0
                                    {
                                        info.Add(str);  //添加新赋值的str
                                    }
                                }else
                                {
                                    info.Add(str); //否则直接添加str
                                }
                            }
                        }
                    }
                }
            }
        }
        static void WriteFileInfo(string path,List<string> info)  //定义写出的静态方法
        {
            using(StreamWriter writer = new StreamWriter(path,false,Encoding.UTF8))  //固定格式
            {
                for(int i = 0;i<info.Count;i++)  //for循环遍历
                {
                    writer.WriteLine(info[i]);
                }
                writer.WriteLine("//by 自动去除注释工具");
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("操作有风险,取消注释前请先保留一份...");
            List<string> list = new List<string>();  //定义动态数组  
            string path = Console.ReadLine();  //输入要取消掉注释的路径

            string rePath = path.Insert(path.Length, ".bak");  //定义新文件 在原文件的后面 +.bak
            if(File.Exists(rePath))   //检测有没有rePath
            {
                File.Delete(rePath);  //如果有就删除
            }
            File.Copy(path, rePath);  //程序备份一下
        }
    }
}

将1.txt文本内容计算结果写入2.txt文本

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;


namespace 读文件
{
    class Program
    {
        static bool CheckNumber(string str)
        {
            bool returnValue = true;
            for (int i = 0; i < str.Length; i++)
            {
                if (!char.IsDigit(str[i]))
                {
                    returnValue = false;
                    break;

                }
            }
            return returnValue;
        }
        static bool IsNumber(string number01, string number02)
        {
            bool returnValue = true;
            if (!(CheckNumber(number01) && CheckNumber(number02)))
            {
                returnValue = false;


            }
            return returnValue;
        }
        static void CalcNumberByOper(string[] infos, out string finalStr)
        {
            finalStr = string.Empty;
            long Number01 = Convert.ToInt64(infos[0]);
            long Number02 = Convert.ToInt64(infos[2]);
            switch (infos[1])
            {
                case "+":
                    //字符串的格式化 就是把N个东东按照规则拼成一个字符串
                    finalStr = string.Format("{0} {1} {2} {3} {4}", infos[0], infos[1], infos[2], infos[3], Number01 + Number02);
                    break;
                case "-":
                    finalStr = string.Format("{0} {1} {2} {3} {4}", infos[0], infos[1], infos[2], infos[3], Number01 - Number02);


                    break;
                case "*":
                    finalStr = string.Format("{0} {1} {2} {3} {4}", infos[0], infos[1], infos[2], infos[3], Number01 * Number02);


                    break;
                case "/":
                    if (Number02 == 0)
                    {
                        finalStr = string.Format("{0} {1} {2} {3} {4}", infos[0], infos[1], infos[2], infos[3], "除数不能为0");


                    }
                    else
                    {
                        finalStr = string.Format("{0} {1} {2} {3} {4}", infos[0], infos[1], infos[2], infos[3], Number01 / Number02);


                    }
                    break;
                case "%":
                    if (Number02 == 0)
                    {
                        finalStr = string.Format("{0} {1} {2} {3} {4}", infos[0], infos[1], infos[2], infos[3], "除数不能为0");


                    }
                    else
                    {
                        finalStr = string.Format("{0} {1} {2} {3} {4}", infos[0], infos[1], infos[2], infos[3], Number01 % Number02);


                    }
                    break;
            }


        }
        /// <summary>
        /// 通过将分割之后数据进行分析判断返回一个结果 10+20 = 30 
        /// </summary>
        /// <param name="infos">分割之后的东东  N1 OPE N2 = </param>
        /// <returns></returns>
        static string CalcStringArray(string[] infos)
        {
            string returnValue = string.Empty;
            if (!IsNumber(infos[0], infos[2]))
            {
                returnValue = string.Format("{0} {1} {2} {3} {4}", infos[0], infos[1], infos[2], infos[3], "源文件不是数字");
                goto retTip;
            }
            CalcNumberByOper(infos, out returnValue);

        retTip:
            return returnValue;
        }
        // 读文件
        // 存储文件数据的 -->List<string> fileInfo
        static void ReadFileToList(string filePath, List<string> fileInfo)
        {
            string tmpStr = string.Empty;
            using (StreamReader reader = new StreamReader(filePath, Encoding.UTF8))
            {
                while ((tmpStr = reader.ReadLine()) != null)
                {
                    if (!string.IsNullOrEmpty(tmpStr))
                        fileInfo.Add(tmpStr);
                }
            }
            Console.WriteLine("测试 读取数据{0}行", fileInfo.Count);
        }
        //计算形成一种格式
        static void CalcListInfo(List<string> fileInfo)
        {
            //fileInfo Number01 ope Number02 = 
            for (int i = 0; i < fileInfo.Count; i++)
                fileInfo[i] = CalcStringArray(fileInfo[i].Split(' '));
        }
        // 将计算之后的内容挨个放入一个新的文本
        static void WriteListInfoToFile(string oldPath, List<string> fileInfo)
        {
            string tmpPath = oldPath.Insert(oldPath.IndexOf('.'), "_copy");
            using (StreamWriter writer = new StreamWriter(tmpPath, false, Encoding.UTF8))
            {
                for (int i = 0; i < fileInfo.Count; i++)
                {
                    writer.WriteLine(fileInfo[i]);
                }
            }
        }
        static void Main(string[] args)
        {
            //定义存储空间
            List<string> infoList = new List<string>();
            //输入路径
            string path = Console.ReadLine();
            //读文件
            ReadFileToList(path, infoList);
            //计算
            CalcListInfo(infoList);
            //写文本
            WriteListInfoToFile(path, infoList);


        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
COCO是一个流的计算机视觉数据集,其中包含大量的图像和相关的注释信息。如果要使用COCO数据集训练模型,我们需要将数据集分成训练集和验证集。训练集用于训练模型,验证集用于评估模型的性能。为了方便管理和使用数据,我们需要将数据集导入到文本文件中,例如train.txt和val.txt。 生成train.txt val.txt的方法如下: 1. 下载COCO数据集并解压缩。 2. 打开Python终端,并导入必要的库,如numpy。 3. 读取COCO数据集中的所有图像文件名和注释信息。为此,我们可以使用COCO API。 4. 将所有文件名和注释信息分成训练集和验证集。我们可以使用随机抽样的方式将它们分成两部分。可以选择分割的比例,如80%作为训练集,20%作为验证集。 5. 将训练集和验证集中的文件名和注释信息写入train.txt和val.txt文件中。每应该包含一个文件名和注释信息,以空格分隔。 6. 完成后,我们就可以通过train.txt和val.txt文件进模型的训练和验证。可以使用ImageNet预训练模型作为初始模型,并使用COCO数据集训练模型。模型训练后,可以使用验证集检查模型的性能,并调整模型的超参数,以获得更好的性能。 总之,生成train.txt val.txt的过程比较简单,主要是将图像文件名和注释信息分成训练集和验证集,并将它们写入到对应的文本文件中。这样,我们就可以使用它们来训练和验证模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值