Lua教程(十六):系统库(os库)_Lua

Lua为了保证高度的可移植性,因此,它的标准库仅仅提供了非常少的功能,特别是和OS相关的库。但是Lua还提供了一些扩展库,比如Posix库等。对于文件操作而言,该库仅提供了os.rename函数和os.remove函数。
1. 日期和时间:

在Lua中,函数time和date提供了所有的日期和时间功能。

如果不带任何参数调用time函数,它将以数字形式返回当前的日期和时间。如果以一个table作为参数,它将返回一个数字,表示该table中所描述的日期和时间。该table的有效字段如下:

print(os.time{year = 1970, month = 1, day = 1, hour = 8, min = 0}) --北京是东八区,所以hour等于时表示UTC的0。

print(os.time())  --输出当前时间距离1970-1-1 00:00:00所经过的秒数。输出值为 1333594721

函数date是time的反函数,即可以将time返回的数字值转换为更高级的可读格式,其第一个参数是格式化字符串,表示期望的日期返回格式,第二个参数是日期和时间的数字,缺省为当前日期和时间。如:

复制代码 代码如下:

dd = os.date("*t",os.time())  --如果格式化字符串为"*t",函数将返回table形式的日期对象。如果为"!*t",则表示为UTC时间格式。
print("year = " .. dd.year)
print("month = " .. dd.month)
print("day = " .. dd.day)
print("weekday = " .. dd.wday)  --一个星期中的第几天,周日是第一天
print("yearday = " .. dd.yday)  --一年中的第几天,1月1日是第一天
print("hour = " .. dd.hour)
print("min = " .. dd.min)
print("sec = " .. dd.sec)
   
--[[
year = 2012
month = 4
day = 5
weekday = 5
yearday = 96
hour = 11
min = 13
sec = 44
--]]

    date函数的格式化标识和C运行时库中的strftime函数的标识完全相同,见下表:

复制代码 代码如下:

print(os.date("%Y-%m-%d"))  --输出2012-04-05

    函数os.clock()返回CPU时间的描述,通常用于计算一段代码的执行效率。如:

复制代码 代码如下:

local x = os.clock()
local s = 0
for i = 1, 10000000 do
    s = s + i
end
print(string.format("elapsed time: %.2f\n", os.clock() - x))

--输出结果为:
--elapsed time: 0.21

2. 其他系统调用:

    函数os.exit()可中止当前程序的执行。函数os.getenv()可获取一个环境变量的值。如:
 

复制代码 代码如下:

    print(os.getenv("PATH"))  --如果环境变量不存在,返回nil。
    os.execute函数用于执行和操作系统相关的命令,如:
    os.execute("mkdir " .. "hello")

 

时间: 2024-11-10 08:28:15

Lua教程(十六):系统库(os库)_Lua的相关文章

Lua教程(六):编译执行与错误_Lua

1. 编译:     Lua中提供了dofile函数,它是一种内置的操作,用于运行Lua代码块.但实际上dofile只是一个辅助函数,loadfile才是真正的核心函数.相比于dofile,loadfile只是从指定的文件中加载Lua代码块,然后编译这段代码块,如果有编译错误,就返回nil,同时给出错误信息,但是在编译成功后并不真正的执行这段代码块.因此,我们可以将dofile实现为: 复制代码 代码如下:  function dofile(filename)      local f = as

第二十六节 使用库

库的用途和模版比较类似,都是可将同一内容用于不同的网页.但库比较小巧,只是使用了一个或几个页面元素.应用模版,则网页的大体结构和内容已确定,只需更改部分内容:而应用库,只是往页面中加入部分页面元素. 点击菜单栏的Window\Library,或点击Launcher面板左起第二个图标,或直接使用F6,弹出库面板.(库面板) 库由一个个条目组成.可新建一个条目,也可把已存在的页面元素设置为条目.要新建一个条目,点击库面板右下方的图标即可.这时,面板上多出一个名为untitle的项,此时可改变它的名称

FrontPage 2003基础教程(十六) 在网页中插入链接栏

1.光标在要插入链接栏的地方或选中共享边框 2.点击"插入"(或是编辑"链接栏"属性),Web组件,找到"链接栏",有两个选项:基于导航结构的链接栏:自定义链接栏 3.点下一步 4.选择"样式",有多种,自定. 可以选中"使用鲜艳颜色"和"使用动态图形" 5.再选择"横向"或"纵向" 6.点"完成"进入"属性"

Android简明开发教程十六:Button画刷示例

将RadioButton 换成Button ,类似的在res/layout 中新建brush.xml: <?xml version="1.0″ encoding="utf-8″?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background=&qu

Lua教程(二):语法约定_Lua

Lua 中用到的 名字(也称作 标识符)可以是任何非数字开头的字母.数字.下划线组成的字符串. 这符合几乎所有编程语言中关于名字的定义. (字母的定义依赖于当前环境:系统环境中定义的字母表中的字母都可以被用于标识符.) 标识符用来命名变量,或作为表的域名. 下面的关键字是保留的,不能用作名字: 复制代码 代码如下: and       break     do        else      elseif end       false     for       function  if i

PostgreSQL教程(十六):系统视图详解_PostgreSQL

一.pg_tables:     该视图提供了对有关数据库中每个表的有用信息地访问. 名字 类型 引用 描述 schemaname name pg_namespace.nspname 包含表的模式名字. tablename name pg_class.relname 表的名字. tableowner name pg_authid.rolname 表的所有者的名字. tablespace name pg_tablespace.spcname 包含表的表空间名字(如果是数据库缺省,则为 NULL).

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)地图自定义切片与导出 做为提升游戏性能的一个重要环节就是地图的优化,作为基于Web的游戏来说,可以通过将地图切成若干同尺寸的片后,根据主角的位置进行时时的按需加载.举个简单例子,好比一幅20000*20000的地图,我们将之以400*400像素为一个地图片单位切成2500片,假若游戏窗口尺寸为800*600,那么我们每次只需加载以主角为中心的周围9块地图片(1200*900像素)即可实现填充,这比起

Lua中的一些常用函数库实例讲解_Lua

前言 这篇文章将会来一些比较轻松的内容,就是简单的介绍一下Lua中几个常用的库.简单的说就是几个API的介绍.所以说,看起来比较容易,也没有多大的分量.就是纯粹的总结.使用库就是为了方便我们的开发,提高开发效率,同时也能保证代码的质量.希望大家以后也不要重复造轮子了. 数学库 数学库(math)由一组标准的数学函数构成.这里主要介绍几个常用的函数,其它的大家可以自行百度解决. 三角函数(sin,cos,tan--) 所有的三角函数都使用弧度单位,可以用函数deg(角度)和rad(弧度)来转换角度

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十六)

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十六)通用型角色头像面板 目前游戏的开发进度已经基本实现了精灵对象之间的普通交互,接下来我们需要朝着实现战斗系统的目标前行.而实现它的前提是必须完善精灵控件的基本属性,如添加生命值.魔法值.活力值.经验值等基本属性并通过窗体界面进行完美体现,本节我将为大家讲解上述内容的具体实现. 既然是为精灵添加属性,大家首先想到的当然是为精灵控件加入属性值索引器: /// <summary> /// 生命值,[0]-当前