如何让 LUA 脚本读取我的配置文件
2016-12-16 3:19:21
收藏:0
阅读:292
评论:3
我想让 LUA 脚本读取自定义配置文件
personal.txt
[user4]
id=1234
code=9876
[user3]
id=765
code=fh723
这样我就可以读取或写入数据了。
点赞
用户4473079
你可以使用 Lua 模块来制作你的配置文件:
-- config.lua
local _M = {}
_M.user3 = {
id = 765,
code = "fh723",
}
_M.user4 = {
id = 1234,
code = "9876",
}
return _M
然后你可以 require 这个模块,并随心所欲地使用模块表中的字段:
-- main.lua
local config = require "config"
print (config.user3.id)
print (config.user3.code)
print (config.user4.id)
print (config.user4.code)
-- 你也可以修改模块表中的字段
config.user4.id = 12345
print (config.user4.id)
输出:
765
fh723
1234
9876
12345
2016-12-16 03:44:21
用户3735873
下面是一种可能性。(警告:未经 100% 测试但似乎有效。) 您可以读取/写入此类文件,并根据哪些参数留空添加,更新或删除条目。
--==============================================================================
本地
功能文件_exists(path)
当地f = io.open(path)
如果f == nil then return end
f:close()
返回路径
以下
- 在一个表格中读取整个配置,使每个部分成为具有相应对中对的键的键/值对表的键。
功能read_config(filename)
文件名 =文件名或''
断言类型(文件名)=='字符串')
如果文件_exists (文件名)~= nil then return ans end
)local ans,u,k,v,temp = {}
的为了line 进入 io.lines(文件名)中
temp = line:match('^%[(.+)%]$')
如果 temp ~ = nil 而且 u ~ = temp 那么 u = temp end
k,v = line:match('^([^ =] +)=(.+)$')
如果 u ~ = nil then
ans [u] = ans [u]或{}
如果 k ~ = nil then
ans [u] [k] = v
结束
结束
返回答案
结束
- 当三个参数都为空时,根本不采取任何措施。
- 当键和值都为空,但部分不为空时,删除部分。
- 仅当值为空时,删除给定部分的键值对。
功能write_config(filename,section,key,value)
文件名 =文件名或''
断言类型(文件名)=='字符串')
如果section == nil且key == nil且value == nil then return end
t = read_config (文件名) - 读取现有配置(如果有)
如果部分~ = nil且值== nil then
如果关键字== nil,则t [section] = nil --消除整个部分
其他
t [section] [key] = nil - 消除键/值对
结束
转到WriteFile
结束
如果关键字:match'=' then
错误('关键字内部不应包含等号')
结束
t [部分] = t [部分]或{} - 如果不存在则创建部分
t [section] [key] = value - 更新关键值
WriteFile: - 写入文件
fo = io打开(文件名,'w')
对于k,v在对中对(t)中对
fo:write('['..k..']\n')
对于k,v在对中对(v)中对
fo:write(k..'='..v..'\n')
结束
fo:write('\n')
结束
fo:close()
返程-返回更新的配置表
结束
-==============================================================================
示例用法的
--------------------------------------------------------------------------------
f ='personal.txt' - 要使用的文件
write_config(f,'user2','id','my_id') - 更新关键字值对
write_config(f,'user2','name','noone') - 添加关键字值对
write_config(f,'user3','id','818') - 更新关键字值对
write_config(f,'user3','xxx','whatever') - 添加关键字值对
write_config(f,'newuser','id','54321') - 创建新用户
write_config(f,'newuser','xxx','54321') - 创建新关键字/值对
write_config(f,'newuser','xxx') - 删除关键值对
write_config(f,'newuser') - 删除部分
2016-12-17 19:16:41
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

为此,您应该将配置文件制作成Lua兼容格式:
然后,您可以使用
loadfile加载文件,并传入自定义环境以将内容放置其中:local configEnv = {} -- 以保持与全局环境分离 local f,err = loadfile("personal.txt", "t", configEnv) if f then f() -- 运行块 -- 现在configEnv应该包含您的数据 print(configEnv.user4) -- 表 else print(err) end当然,有多种方法可以做到这一点,这只是一种简单且相对安全的方法。