用代码读取配置文档中的指定数据

需求:

在XX游戏根目录中,读取其ini文档,找到游戏的主执行程序,然后运行。

比如我要读取罗马2全面战争的游戏根目录中的ini配置文档。读取到游戏的主程序是“Rome2”,然后运行。

思路:

  1. 找到ini配置文档,可以直接用绝对路径,但是在某些特殊需求下,需要自己获取ini文件名
  2. 打开文件进行数据的读取。
  3. 讲读取的数据进行字符分割,看这个配置文档,一眼就看出来用“=” 进行分割 (注意:这是错的,大家可以试下,或者看我的代码,就会发现我切割了两次,第一次返回的数据是第一行“=”后面的字符串+第二行“=”前面的字符串。)
  4. 所以字符串需要切割两次,然后取文本右边 循环判断有没有.exe后缀,有的话跳出循环,执行程序。

这时 语言的区别其实不大,只要有这个思路 就可以写出来。在这里我分别用易语言和python写一下。

代码:

配置文档:

[Base]
updatepath=http://www.baidu.com
startpage=3dm\main.html
version=z1
gameid=50407
[StartGame]
gamepath=Rome2.exe
bkimg=startgame_btn.bmp
posx=530
posy=463
showpath=D:\www.baidu.com
outpathshow=1
allshow=1

易语言:

.版本 2

.子程序 _按钮1_被单击
.局部变量 目录, 文本型
.局部变量 分割后, 文本型
.局部变量 n, 整数型
.局部变量 wen, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 data, 字节集
.局部变量 dd, 文本型, , "0"
.局部变量 j, 整数型
.局部变量 data2, 文本型, , "0"
.局部变量 k, 整数型

目录 = 取运行目录 ()

分割后 = 取文本左边 (目录, 倒找文本 (目录, “\”, , 假) - 1)

输出调试文本 (分割后)
n = 文件_枚举 (分割后 + “\”, “*.ini”, wen, 真)

输出调试文本 (n)
.计次循环首 (n, i)

    输出调试文本 (wen [i])
    ' 编辑框1.内容 = wen [i] + #换行符 + 编辑框1.内容

    .如果真 (wen [i] ≠ “”)
        data = 读入文件 (wen [i])
        ' 输出调试文本 (到文本 (data))
        dd = 分割文本 (到文本 (data), “=”, )
        输出调试文本 (取数组成员数 (dd))
        .计次循环首 (取数组成员数 (dd), j)
            ' 输出调试文本 (“计数” + dd [j])

            data2 = 分割文本 (到文本 (dd [j]), #换行符, )
            .计次循环首 (取数组成员数 (data2), k)
                输出调试文本 (“-------计数------” + data2 [k])
                编辑框1.内容 = “字段:” + data2 [k] + #换行符 + 编辑框1.内容
                .如果 (取文本右边 (data2 [k], 4) = “.exe”)
                    信息框 (“已找到” + data2 [k], 0, , )
                    跳出循环 ()

                .否则

                .如果结束

            .计次循环尾 ()
        .计次循环尾 ()
    .如果真结束

.计次循环尾 ()

注:易语言这个我最后没写执行游戏主程序的代码

python

# author liun
import os

tag = 0
f = open("D:\\3dmConfig.ini","r",encoding="utf-8")
data = f.read()
data_list = data.split("=")
print(data_list)
for i in range(len(data_list)):
    final_data = data_list[i].split("\n")
    for j in range(len(final_data)):
        print("------------" + final_data[j])
        if final_data[j] == "Rome2.exe":
            tag = 1
            print("\033[32;1mgot it\033[0m")
            print("游戏主程序为:"+final_data[j])
            break
    if tag == 1:
        break

注:python代码我用了绝对路径和直接判断游戏主程序的方法,这样不是很合理,有点懒就没写,,,,,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值