使用 Lua 解析配置文件-lua解析json
使用 Lua 解析配置文件
作者:Seth Kenlon 2022-11-10 09:05:18系统 Linux 本文将讨论一些利用 Lua 进行持久化配置的方法。使用 Lua 配置持久化应用设置。
不是所有的应用都需要配置文件;对很多应用来说,在启动时变得焕然一新对它们更有利。例如,简单的工具就极少需要偏好项和设置在使用过程中保持稳定不变。然而,当你编写一个复杂的应用程序时,如果能让用户设置与应用的交互方式,以及应用与系统交互的方式会很不错。这就是配置文件用来做的事情。本文将讨论一些利用 Lua 进行持久化配置的方法。
选择一种格式
关于配置文件很重要的两点是一致性和可预见性。你不会希望为了保存用户偏好项,将信息转储到文件中,然后再花几天去编码实现“逆向工程”,处理最后出现在文件里的随机信息。
这里用一些常用的配置文件格式。Lua 有一些库可以处理大多数常用的配置格式;在本文中,我会采用 INI 格式。
安装库
Lua 库的核心仓库是Luarocks.org。你可以在这个网站搜索库,或者你可以安装并使用luarocks终端命令。
Linux 环境中,你可以从发行版的软件仓库中下载它,例如:
$ sudo dnf install luarocks在 macOS 上,请使用MacPorts或者Homebrew。在 Windows 上,请使用Chocolatey。
luarocks安装后,你可以使用search子命令来搜索一个恰当的库。如果你不知道库的名字,可以通过关键词来搜索这个库,例如ini、xml或者json,这取决于你想要用这个库做什么。打个比方,你可以搜索inifile`, 这个库被我用来解析 INI 格式的文本文件。
$ luarocks search inifileSearch results:inifile 1.0-2 (rockspec) - https://luarocks.org 1.0-2 (src) - https://luarocks.org 1.0-1 (rockspec) - https://luarocks.org [...]一个开发者容易犯的错误是在系统上安装了这个库却忘了把它和应用打包。这会给没有安装这个库的用户带来麻烦。为了防止这个问题发生,可以使用--tree选项将它安装在项目的本地文件夹中。如果你没有这个项目文件夹,那就先创建这个文件夹再安装库:
$ mkdir demo$ cd demo$ luarocks install --tree=local inifile--tree选项指示luarocks创建一个新文件夹并在其中安装你的库,例如这个例子中的local文件夹。 使用这个简单的技巧,你可以将所有你项目要使用的依赖项直接安装到项目文件夹中。
配置代码
首先,在一个名myconfig.ini的文件中创建一些 INI 数据。
[example]name=Tuxspecies=penguinenabled=false[demo]name=Beastiespecies=demonenabled=false将这个文件保存到你的主目录下,命名为myconfig.ini,不要存到项目文件夹下。你通常会希望配置文件独立于你的文件存在,这样当用户卸载你的应用时,使用应用时产生的数据可以保存在系统中。有些用户会删除不重要的配置文件,但大多数不会。最终,如果他们要重装这个应用,还会保留着所有的用户偏好项。
配置文件的位置以技术来说并不重要,但每一个操作系统都有存储它们的特定或者默认的路径。在 Linux 中,这个路径由Freedesktop 规范指定。它规定配置文件被保存在一个名为~/.config的隐藏文件夹中。为了操作时更加清晰明确,可以在主目录下存储配置文件,以便于使用和寻找。
创建第二个文件,命名为main.lua,并在你喜欢的文本编辑器中打开它。
首先,你必须告诉 Lua 你将想要使用的附加库放置在哪里。package.path变量决定了 Lua 到哪里去寻找这些库。你可以从终端中查看 Lua 默认的包地址:
$ Lua>print(package.path)./?.lua;/usr/share/lua/5.3/?.lua;/usr/share/lua/5.3/?/init.lua;/usr/lib64/lua/5.3/?.lua;/usr/lib64/lua/5.3/?/init.lua在你的 Lua 代码中,将你本地库的路径添加到package.path中:
package.path = package.path .. ';local/share/lua/5.3/?.lua使用 Lua 解析 INI 文件
当包的位置确定以后,下一件事就是引入inifile库并处理一些操作系统逻辑。即使这是一个很简单的应用,代码也需要从操作系统获取到用户主目录的路径,并建立在必要时将文件系统路径返回给操作系统的通信方式。
package.path = package.path .. ';local/share/lua/5.3/?.luainifile = require('inifile')-- find home directoryhome = os.getenv('HOME')-- detect path separator-- returns '/' for Linux and Mac-- and '\' for Windowsd = package.config:sub(1,1)现在你可使用inifile来从配置文件解析数据到 Lua 表中。一旦这些数据被导入进表中,你可以像查询其他的 Lua 表一样查询它。
-- parse the INI file and-- put values into a table called confconf = inifile.parse(home .. d .. 'myconfig.ini')-- print the data for reviewprint(conf['example']['name'])print(conf['example']['species'])print(conf['example']['enabled'])在终端中运行代码可以看见结果:
$ lua ./main.luaTuxpenguinfalse这看起来是正确的。试试在demo块中执行同样的操作。
使用 INI 格式存储数据
不是所有用来解析的库都会读写数据(通常被称为 _编码 和解码),但是inifile会这样做。这意味着你可以使用它对配置文件进行修改。
为了改变配置文件中的值,你可以对被解析的表中的变量进行设置,然后把表重写回配置文件中。
-- set enabled to trueconf['example']['enabled'] = trueconf['demo']['enabled'] = true-- save the changeinifile.save(home .. d .. 'myconfig.ini', conf)现在再来看看配置文件:
$ cat ~/myconfig.ini[example]name=Tuxspecies=penguinenabled=true[demo]name=Beastiespecies=demonenabled=true配置文件
按照用户的设想来存储数据对程序来说是至关重要的。幸运的是,这对工程师来说是一个很常规的任务,大多数工作可能早已被完成了。只要找到一个好用的库完成开放格式下编码和解码,你就能为用户提供一致且持续的体验。
以下是完整的演示代码,可供参考。
package.path = package.path .. ';local/share/lua/5.3/?.lua'inifile = require('inifile')-- find home directoryhome = os.getenv('HOME')-- detect path separator-- returns '/' for Linux and Mac-- and '\' for Windowsd = package.config:sub(1,1)-- parse the INI file and-- put values into a table called confconf = inifile.parse(home .. d .. 'myconfig.ini')-- print the data for reviewprint(conf['example']['name'])print(conf['example']['species'])print(conf['example']['enabled'])-- enable Tuxconf['example']['enabled'] = true-- save the changeinifile.save(home .. d .. 'myconfig.ini', conf) 责任编辑:庞桂玉 来源:Linux中国 Lua配置文件推荐系统
电脑公司Ghost Win8.1 x32 精选纯净版2022年7月(免激活) ISO镜像高速下载
语言:中文版系统大小:2.98GB系统类型:Win8电脑公司Ghost Win8.1x32位纯净版V2022年7月版本集成了自2022流行的各种硬件驱动,首次进入系统即全部硬件已安装完毕。电脑公司Ghost Win8.1x32位纯净版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,精心挑选的系统维护工具,加上绿茶独有
微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载
语言:中文版系统大小:5.13GB系统类型:Win11微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化 1、保留 Edge浏览器。 2、隐藏“操作中心”托盘图标。 3、保留常用组件(微软商店,计算器,图片查看器等)。 5、关闭天气资讯。
Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载
语言:中文版系统大小:4.75GB系统类型:Win11Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件
windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载
语言:中文版系统大小:5.31GB系统类型:Win11windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化
微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载
语言:中文版系统大小:5.31GB系统类型:Win11微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载
微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件
语言:中文版系统大小:0MB系统类型:Win11微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为
雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载
语言:中文版系统大小:4.75GB系统类型:雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统
雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO
语言:中文版系统大小:5.91GB系统类型:Win7雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户
相关文章
- 电脑广告弹窗太多怎么关闭 彻底关闭电脑广告弹窗方法【详解】
- Win8无法打开文件怎样处理?
- Win10怎样把所有哈希值校验算法添加到文件右键层叠菜单中?
- OpenHarmony编译固件新增支持Ubuntu22.04平台-openharmony 编译
- XP显复苏!全球桌面操作系统份额最新统计
- Win7系统安装KB3133977补丁后无法开机怎么办?
- Win7打开软件速度慢怎样处理?
- win10提示已经停止此公布者在你的计算机上运行软件的处理办法
- 电脑永久激活,本文教您电脑如何永久激活win10
- 检查 Linux 上开放端口的 5 种简单方法
- 如何查看WinXP系统里保存的WIFI密码
- 如何预防与查杀U盘病毒?
- 剧本杀《K的游戏19生日快乐》复盘解析+真相剧透
- 机器人学导论pdf下载
- 原画是什么
- 录屏大师APP怎么添加音乐 录屏大师APP添加音乐方法
- Win11提示“无法打开此安装程序包请确认该程序包存在”解决方法【详解】
- win11安全中心怎么不见了 win11安全中心不见了解决方法【详解】
热门系统
- 1华硕笔记本&台式机专用系统 GhostWin7 32位正式旗舰版2018年8月(32位)ISO镜像下载
- 2深度技术 Windows 10 x86 企业版 电脑城装机版2018年10月(32位) ISO镜像免费下载
- 3雨林木风 Ghost Win7 SP1 装机版 2020年4月(32位) 提供下载
- 4电脑公司 装机专用系统Windows10 x86喜迎国庆 企业版2020年10月(32位) ISO镜像快速下载
- 5深度技术 Windows 10 x86 企业版 六一节 电脑城装机版 版本1903 2022年6月(32位) ISO镜像免费下载
- 6深度技术 Windows 10 x64 企业版 电脑城装机版2021年1月(64位) 高速下载
- 7新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年10月(64位) ISO镜像免费下载
- 8新萝卜家园 GhostWin7 SP1 最新电脑城极速装机版2018年8月(32位)ISO镜像下载
- 9电脑公司Ghost Win8.1 x32 精选纯净版2022年5月(免激活) ISO镜像高速下载
- 10新萝卜家园Ghost Win8.1 X32 最新纯净版2018年05(自动激活) ISO镜像免费下载
热门文章
常用系统
- 1雨林木风Win10自动激活下载_雨林木风Win10 64位专业版镜像免费下载
- 2win10骨头精简版下载_win10最小精简版500m 64位装机系统下载
- 3笔记本Win10一键重新系统下载_笔记本专用Windows10 64位专业版下载V2021.05
- 4雨林木风 GHOST WIN10 X86 优化正式版 V2020.01 (32位) 下载
- 5雨林木风 GHOST WIN10 64位经典专业版 V2020.12 下载
- 6大地系统Ghost Win10 64位 稳定纯净版 v2023.09最新免费下载
- 7雨林木风 Ghost Win7 SP1 装机版 2020年4月(32位) 提供下载
- 8Window10 21H1正式版64位下载_雨林木风Win10 21H1五一特别版下载
- 9win11纯净版镜像ISO专业版 v2023下载
- 10【风林火山】 GHOST WIN7 SP1 X64 装机旗舰版 V2017.08 (64位) 下载