C#操作cfg和INI格式的文件

这两种cfg和INI格式的文件操作方式类似,我就以cfg文件为例

文件结构如下

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

[shortcut]
from=-3
activation=linear


[yolo]
mask=6,7,8
anchors=10,13,16,30,33,23,30,61,62,45,59,119,116,90,156,198,373,326
classes=2
num=9
jitter=.3
ignore_thresh=.7
truth_thresh=1
random=1

每一个[名称]相当于是一个节点,也可以说是Section对象,跟xml一样操作灵活。

首先 using SharpConfig;在项目中Nuget里搜索安装

下面做了一个修改的cfg文件的例子

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using SharpConfig;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {

            string cfgfile = @"C:\Users\Administrator\Desktop\TEST.cfg";
            ///获取cfg文件内容
            Configuration config = Configuration.LoadFromFile(cfgfile);
            string str = "21.1864,27.9741, 29.2781,48.4374, 46.0249,38.9342, 45.4448,63.0540, 65.5580,56.7747, 49.8878,85.4522, 57.3819,113.8931, 100.0110,74.2307, 150.1680,121.6222";
            foreach (Section item in config)
            {
                if (item.Name== "yolo")//获取yolo节点
                {
                    //yolo节点某一个名称的value修改
                    item["anchors"].StringValue = str.Replace(" ", "");
                }  
            }
            config.SaveToFile(cfgfile, Encoding.ASCII);//保存
        }
     
    }
}

注意的是:替换的字符串,不要有空格,防止出错加上它Replace(" ", ""),除去字符串中的所有空格;

  不加的话有可能替换的地方value出现引号包裹,我在开发过程中遇到这个情况,找了半天是空格导致的。

有误:anchors=“21.1864,27.9741,29.2781,48.4374,46.0249,38.9342,45.4448,63.0540,65.5580,56.7747,49.8878,85.4522,57.3819,113.8931,100.0110,74.2307,150.1680,121.6222”

正确:anchors=21.1864,27.9741,29.2781,48.4374,46.0249,38.9342,45.4448,63.0540,65.5580,56.7747,49.8878,85.4522,57.3819,113.8931,100.0110,74.2307,150.1680,121.6222

修改后的文件

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

[shortcut]
from=-3
activation=linear


[yolo]
mask=6,7,8
anchors=21.1864,27.9741,29.2781,48.4374,46.0249,38.9342,45.4448,63.0540,65.5580,56.7747,49.8878,85.4522,57.3819,113.8931,100.0110,74.2307,150.1680,121.6222
classes=2
num=9
jitter=.3
ignore_thresh=.7
truth_thresh=1
random=1

猜你喜欢

转载自blog.csdn.net/qq_42335551/article/details/86623142
今日推荐