lua使用io.open跨平台文件夹遍历匹配查找
-- Desc :实现在LUA_PATH中的lua文件中遍历寻找没用到PNG_PATH路径下的png图片,并将其打印出来。
-- Date :12:49:28 2014-09-04
1 print("Lua Script Start") function getFileName( path )
len = string.len(PNG_PATH);
return string.sub(path, len+) -- remove "/"
end function isInIt( file,name )
--print(file .. " -- " .. name )
for line in io.lines(file) do
if isContain(line , name) then
return true;
end
end
return false;
end function isContain( line , str )
return string.find(line , str);
end PNG_PATH = "user/image"
getPngFileTable = io.popen('find * ' .. PNG_PATH) pngFileTable = {};
for file in getPngFileTable:lines() do
if string.find(file,"%.png$") then
fileName = getFileName(file);
print(fileName)
table.insert(pngFileTable,fileName);
end
end
print("png count is :"..#pngFileTable); LUA_PATH = "user/scripts"
getLuaFileInfo = io.popen('find * ' .. LUA_PATH)
luaFileTable = {};
for file in getLuaFileInfo:lines() do
if string.find(file,"%.lua$") then
--print(file)
table.insert(luaFileTable,file);
end
end local pairs = pairs
for _,name in pairs(pngFileTable) do
flag = ;
for _,file in pairs(luaFileTable) do
if isInIt(file , name) then
flag = ;
break;
end
end
if flag == then
print(name)
end
end print("Lua Script End!") --Desc: lua io.popen ([prog [, mode]])
--Starts program prog in a separated process and returns a file handle that
--you can use to read data from this program (if mode is "r", the default)
--or to write data to this program (if mode is "w").
--This function is system dependent and is not available on all platforms.
注:
1: io.popen()简易说明 Lua中,os.execute可以执行dos命令,但是返回的是系统状态码,默认输出
io.popen()也可以执行dos命令,但是返回一个文件。eg:
local t = io.popen('svn help')
local a = t:read("*all") --a返回一个字符串,内容是svn help的内容
如果想执行某命令或程序可选os.execute() , 如果还想捕捉该执行结果可用io.popen(),得到的是userdata数据类型;
eg:复制文件 os.execute("copy" .. originalPath .. "," .. backupPath)
2: io.popen() 是跨平台的,却也跟系统有关,在windows下无法取得访问文件夹的权限,屡次尝试都没成功,liunx和mac下可以;
3: 目前还不得知,使用io.poen()遍历的png图片竟然会 遍历了两边,造成结果是一半为脏数据,记载此文时还在查找原因,不解啊;
lua使用io.open跨平台文件夹遍历匹配查找的更多相关文章
- lua跨平台文件夹遍历匹配查找
require"lfs" --[[Desc:在B路径D文件中下 搜寻A路径下的没用到的C类文件: 并且将没用到的B类文件名称打印出来: 设置好路径拖到lua自带编辑器中即可运行之; ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- java io流 对文件夹的操作
java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...
- HALCON初步:文件夹遍历,文件筛选,文件名拆分,图片读取及保存
[1]文件夹遍历 list_image_files ( : : ImageDirectory, Extensions, Options : ImageFiles) ImageDirectory: 文件 ...
- 编写Java程序,在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小
查看本章节 查看作业目录 需求说明: 在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小 实现思路: 创建ImageFileFilter类实现FilenameFilter接口,且重写 ...
- Android加载SD卡目录,文件夹遍历,图片设置,设置文件对应打开方式等
此案例主要说的是Android使用GridView加载SD卡下所有目录,文件夹多层遍历,文件图标修改,设置文件对应打开方式等功能. 如图: 代码: public class GridViewFile ...
- python实现文件夹遍历
python 中os.path模块用于操作文件或文件夹 os.path.exists(path) 判断文件路径是否存在 dir = "c:\windows"if os.path.e ...
- io流处理文件夹复制功能(java代码)
拷贝某个目录下得所有文件拷指定位置 思想归纳 首先我们需要做的先获取到资源文件夹路径,这里我们先在程序中写死,然后我们还需要一个目标文件夹就是你需要拷贝到哪里.有了这两个文件夹我就可以进行复制了 然后 ...
- 【JAVA】编程(6)--- 应用IO流拷贝文件夹(内含多个文件)到指定位置
此程序应用了: File 类,及其常用方法: FileInputStream,FileOutputStream类及其常用方法: 递归思维: package com.bjpowernode.javase ...
随机推荐
- Unity加载模块深度解析(纹理篇)
在游戏和VR项目的研发过程中,加载模块所带来的效率开销和内存占用(即“加载效率”.“场景切换速度”等)经常是开发团队非常头疼的问题,它不仅包括资源的加载耗时,同时也包含场景物件的实例化和资源卸载等.在 ...
- mysql text字段判断是否为空
mysql text字段判断是否为空 mysql text字段为空select * from `tableName` where `textField` is null or `textField` ...
- 利用onNewIntent避免Activity之间的跳转传值多次实体化
onNewIntent 需要注意的是: 1.通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统也会创建一个新的Activity实例.为了不让Acti ...
- react 15来了
有段时间没做react的项目了,前两天才发现react搞了一个不太小的动作,不是遵循原来的小版本号迭代,从0.14.x继续更新,而是直接跳到了15.0.X.虽然业界一直有这个观点,0.x的版本视为非稳 ...
- 简单的css js控制table隔行变色
(1)用expression 鼠标滑过变色: <style type="text/css"><!-- table { background-color:#0000 ...
- Ubuntu搭建Ruby on Rails环境
安装Ruby 由于Ubuntu的apt包管理器的ruby版本过旧,故考虑从源码编译安装.这里以安装ruby2.3.0为例: sudo apt-get install build-essential z ...
- member template
1.当且仅当类模板的参数相同时,你才能对类实体对象相互赋值,即将一个实体对象整体赋值给另外一个实体对象.不能将一种类型的实体对象赋值给另外一种实体对象.如: Stack<int> intS ...
- HTML URL 编码
转自:http://www.w3school.com.cn/tags/html_ref_urlencode.htmlURL 编码 - 从 %00 到 %8f ASCII Value URL-encod ...
- java内部类以及异常处理
框架图 内部类 将一个类定义在另一个类的里面,里面那个类就称为内部类(也叫内置类或嵌套类). 内部类的访问规则:1.内部类可以直接访问外部类中的成员,包括私有成员. 之所以可以直接访问外部类中的 ...
- TestNG教程
TestNG教程 http://www.yiibai.com/testng/2013/0916311.html TestNG,3种执行方式: 1.ant(build.xml) 2.Eclipse(安装 ...