Lua,不使用模块,解压文件

这篇具有很好参考价值的文章主要介绍了Lua,不使用模块,解压文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本来lua遍历文件夹下压缩包内容、路径可以通过加载模块: require(“lfs”) 和 require(“zip”) 来解决。
但是本人通过c++调用lua时,只要lua脚本中使用require加载模块,就会出错。


因此为了能够让c++通过lua,解压当前路径下压缩包,并读取其中文件内容。并没有使用加载模块的方法,而是结合os.execute()系统命令和7z压缩包命令行。


lua调用os.execute()系统命令,其实就相当于c中调用system()命令,也就相当于windows下cmd命令,因此可以自行查找相关命令。




本例中,压缩包在第一级目录,lua脚本放在script文件夹中。


Lua,不使用模块,解压文件,lua,windows,c++


Lua,不使用模块,解压文件,lua,windows,c++




需求为:解压第一级目录的压缩包到脚本所在目录,然后读取解压出来的文件夹其中的xml文件内容数据,最后再把解压出来的整个文件夹删除。文章来源地址https://www.toymoban.com/news/detail-529513.html

--当前为windows环境
--获取当前路径
function getcurrDir()

  os.execute("cd > cd.tmp")
  local f = io.open("cd.tmp", r)
  local cwd = f:read("*a")
  f:close()
  os.remove("cd.tmp")

  cwd = string.sub(cwd, 1, -2)
  cwd = string.gsub(cwd,"\\","\\\\")
  return cwd

end





--解压当前目录下指定压缩包到指定文件夹,并返回其中xml文件数据
zipname = "CN-PA-PRSS-10.zip"
curpath = getcurrDir()

function getZipData(zipname)
	dirname = "zipfile"

	os.execute("7z x ../"..zipname.." -o"..dirname)		--解压上级目录的压缩包,到当前脚本所在目录指定文件夹中
	os.execute("dir "..dirname.."/s/b/a-d > dir.tmp")	--输出指定文件夹下所有子目录中属性不为目录的文件名,到临时文件
	local f = io.open("dir.tmp", r)
	local cwd = f:read("*a")
	f:close()
	os.remove("dir.tmp")

	cwd = string.sub(cwd, 1, -2)
	cwd = string.gsub(cwd, "\\", "\\\\")
	local f = io.open(cwd, r)
	local data = f:read("*a")
	f:close()
	os.execute("rd /s/q " ..curpath.."\\"..dirname)		--删除解压出来的文件夹

	return data
end

getZipData(zipname)

到了这里,关于Lua,不使用模块,解压文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Lua之Lua源文件批量转换为luac字节码文件

    准备的工具:luac.exe  CSDN https://mp.csdn.net/mp_download/manage/download/UpDetailed Unity版:

    2024年02月11日
    浏览(24)
  • Lua学习笔记:require非.lua拓展名的文件

    前言 本篇在讲什么 Lua的require相关的内容 本篇需要什么 对 Lua 语法有简单认知 对 C++ 语法有简单认知 依赖 Visual Studio 工具 本篇的特色 具有全流程的 图文教学 重实践,轻理论,快速上手 提供全流程的 源码 内容 ★提高阅读体验★ 👉 ♣ 三级标题 👈 👉 ♦ 四级标题 👈 想

    2024年02月07日
    浏览(34)
  • Lua学习笔记之迭代器、table、模块和包、元表和协程

    迭代器是一种对象,它能够来遍历标准库模板容器中的部分或全部元素,每个迭代器对象代表容器中确定的地址,在Lua中迭代器是一种支持指针类型的结构,他可以遍历集合的每一个元素。 泛型for自己内部保存迭代函数,实际上保存三个值:迭代函数、状态常量、控制变量。

    2024年03月09日
    浏览(50)
  • 开源的API Gateway项目- Kong基于OpenResty(Nginx + Lua模块)

    Kong 是一个在 Nginx 内运行的开源 API 网关和微服务抽象层。它是用于处理 API 流量的灵活、可扩展、可插入的工具。 Kong 提供了以下功能: 用户登录 :Kong 提供了多种认证插件,像 JWT、OAuth 2.0 等,可以满足用户登录需求。 Token 管理 :使用上述认证插件,Kong 可以有效地管理

    2024年01月23日
    浏览(34)
  • Lua 批量修改文件夹下文件名

    2024年02月16日
    浏览(39)
  • 无涯教程-Lua - 文件I/O

    I/O库用于在Lua中读取和处理文件。 Lua中有两种文件操作,即隐式( Implicit )和显式( Explicit )操作。 对于以下示例,无涯教程将使用例文件test.lua,如下所示。 一个简单的文件打开操作使用以下语句。 下表列出了各种文件模式。 Sr.No. Mode Remark 1 \\\" r\\\" 只读模式,是打开现有文件的

    2024年02月14日
    浏览(25)
  • 【Lua】Lua包管理器-LuaRocks的使用教程

    lua的包管理工具是: LuaRocks 。本文内容基于 MacOS 系统。 参考官方文档:Using LuaRocks 可用的模块在luarocks官网搜索即可。例如现在我们安装一个 luasocket 模块。 注意 :不知道是 luarocks 故意为之,还是因为有 bug 。在 luarocks 的安装目录(以及任意子目录)执行 luarocks 命令,和在其

    2024年02月14日
    浏览(25)
  • lua 请求ftp服务器数据,下载文件

    1、装入ftp库 2、调用ftp的get()方法 3、get()方法参数格式: 4、将返回到的数据写入文件中 例如,本次获取专利数据系统 http://patdata1.cnipa.gov.cn/ 的ftp站点数据

    2024年02月16日
    浏览(27)
  • nginx+lua(openresty) lua-mongodb 安装及使用(四)

    前言 前章已经讲述 ua-protobuf 安装及使用 这章主要讲述 openresty 环境下 lua-mongodb 安装及使用 1:环境 ubuntu16(18) mongodb 3.6 2:安装mongodb 3.6 如果需要安装4.0 前面2句换个即可 修改 sudo vim /etc/mongod.conf 主要修改了3个地方,storage log net mongodb 3.0之后配置文件采用YAML格式,这种格式使用

    2024年02月12日
    浏览(44)
  • 【实战】使用Lua脚本怎么清理redis中的数据【实战】使用Lua脚本怎么清理redis中的数据

    首先我们通过hiredis 向redis 中写入了数据,这里我们主要以测试为目的,所以,Key 值设定为毫秒级时间戳。 但是当我们测试完成之后,需要验证实际情况,这里我们直接使用redis-cli 登录数据库看看。 本次测试完成,接下来要结合业务开始测试,需要清理数据库,但是一条一

    2024年02月13日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包