从零开始学编程

 找回密码
 立即注册

QQ登录

只需一步,快速开始

界面工厂编程视频教程广告联系qq1031180668广告位
查看: 711|回复: 1

[lua] lua操作系统库

[复制链接]
  • ta_mind
    慵懒
    2016-10-4 14:49
  • classn_01: 20 classn_02

    [LV.4]偶尔看看III

    14

    主题

    50

    帖子

    80

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    80

    优秀版主

    发表于 2015-12-10 10:50:48 | 显示全部楼层 |阅读模式

    这个库通过表os实现。
    os.clock ()
    功能:返回一个程序使用CPU时间的一个近似值
    例如:
    local x = os.clock();
    print(os.clock())
    local s = 0;
    for i = 1, 100000000 do
    s = s + i;
    end
    print(string.format("elapsed time : %.2f\n", os.clock() - x));
    输出:
    0
    elapsed time : 2.55

    os.date ([format [, time]])
    功能:返回一个按format格式化日期、时间的字串或表
    若设置time参数,则按time指定的时间格式化,否则按当前时间格式化
    参数:
    format:
    "!":按格林尼治时间进行格式化。
      "*t":将返一个带year(4位),month(1-12), day (1--31), hour (0-23), min (0-59), sec (0-61), wday (星期几, 星期天为1), yday (年内天数), and isdst (是否为日光节约时间true/false)的带键名的表; 若没有"*t"则返回一个按C的strftime函数格式化的字符串。
    若不带参数,则按当前系统的设置返回格式化的字符串 os.date() <=> os.date("%c")

    例如:
    t = os.date("*t", os.time());
    for i, v in pairs(t) do
    print(i, v);
    end

    输出:
    hour 14
    min 58
    wday 2
    day 10
    month 8
    year 2009
    sec 18
    yday 222
    isdst false
    对于其它的格式字符串,os.date会将日期格式化为一个字符串
    例如:
    print(os.date("today is %A, in %B")) -->today is Tuesday, in May
    print(os.date("%x", 906000490)) -->09/16/1998


    所有格式化字符串如下:  
    %a      一星期中天数的简写                      (Wed)
    %A      一星期中天数的全称                      (Wednesday)
    %b      月份的简写                                  (Sep)
    %B      月份的全称                                  (September)
    %c      日期和时间                                   (09/16/98 23:48:10)
    %d      一个月中的第几天                          (16)[0 ~ 31]
    %H      24小时制中的小时数                      (23)[00 ~ 23]
    %I      12小时制中的小时数                       (11)[01 ~ 12]
    %j      一年中的第几天                             (259)[01 ~ 366]
    %M      分钟数                                       (48)[00 ~ 59]
    %m      月份数                                       (09)[01 ~ 12]     
    %P      "上午(am)" 或 "下午(pm)"               (pm)
    %S      秒数                                          (10)[00 ~ 59]
    %w      一星期中的第几天                         (3)[0 ~ 6 = 星期天 ~ 星期六]


    os.difftime (t2, t1)
    功能:返回t1到t2相差的秒数
    例如:
    t1 = os.time();
    for i = 0, 10000000 do
    os.time();
    end
    t2 = os.time();
    print(os.difftime(t2, t1));
    输出:
    2

    os.execute ([command])
    功能:相当于C的system函数,返回系统状态码
    例如:
    os.execute("pause")
    输出:
    按任意键继续. . .

    os.exit ([code])
    功能:相当于C的exit函数,终止主程序,code为返回值
    例如:
    os.exit(1)

    os.getenv (varname)
    功能:返回当前进程的环境变量varname的值,若变量没有定义时返回nil
    例如:
    print(os.getenv("USERDOMAIN"))
    print(os.getenv("SystemRoot"))
    print(os.getenv("Os2LibPath"))
    print(os.getenv("rogramFiles" ))
    print(os.getenv("APPDATA" ))
    print(os.getenv("ALLUSERSPROFILE" ))
    print(os.getenv("CommonProgramFiles" ))
    print(os.getenv("COMPUTERNAME" ))
    print(os.getenv("USERNAME"))
    print(os.getenv("USERPROFILE" ))
    print(os.getenv("ComSpec"))
    print(os.getenv("LOGONSERVER" ))
    print(os.getenv("NUMBER_OF_PROCESSORS" ))
    print(os.getenv("OS"))
    print(os.getenv("ATHEXT" ))
    print(os.getenv("ROCESSOR_ARCHITECTURE" ))
    print(os.getenv("ROCESSOR_IDENTIFIER" ))
    print(os.getenv("ROCESSOR_LEVEL" ))
    print(os.getenv("ROCESSOR_REVISION" ))
    print(os.getenv("USERDOMAIN"))
    print(os.getenv("SystemRoot" ))
    print(os.getenv("TEMP"))

    输出:
    RDEV
    C:\WINDOWS
    nil
    C:\Program Files
    C:\Documents and Settings\baiyun\Application Data
    C:\Documents and Settings\All Users
    C:\Program Files\Common Files
    BAIYUN
    baiyun
    C:\Documents and Settings\baiyun
    C:\WINDOWS\system32\cmd.exe
    http://www.cnblogs.com/whiteyun/admin/file://rdev1/
    2
    Windows_NT
    .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw;.wlua
    x86
    x86 Family 15 Model 6 Stepping 5, GenuineIntel
    15
    0605
    RDEV
    C:\WINDOWS
    C:\DOCUME~1\baiyun\LOCALS~1\Temp

    os.remove (filename)
    功能:删除文件或一个空目录,若函数调用失败则返加nil加错误信息


    os.rename (oldname, newname)
    功能:更改一个文件或目录名,若函数调用失败则返加nil加错误信息

    os.setlocale (locale [, category])
    功能:设置程序的当前设置,函数返回最新的值,失败则返回nil
    参数:
    locale:一个指定当前设置的字串
    "":一个空字串,当前设置被视为本地设置
    "c":当前设置被视为标准c设置
    nil:返回category指示设置名的当前值
    category:一个描述要更改的设置名
    "all"[默认], "collate", "ctype", "monetary", "numeric", "time"
    os.time ([table])
    功能:按table的内容返回一个时间值(数字),若不带参数则返回当前时间
    table的字段:year, month, day, hour, min, sec, isdst


    例如:
    print(os.time());
    -->1249887340
    print(os.time({year=1970, month=1, day=1, hour=0}));
    -->10500

    os.tmpname()
    功能:返回一个临时文件名。

    I/O库提供两种不同的方式进行文件处理
      1、io表调用方式:使用io表,io.open将返回指定文件的描述,并且所有的操作将围绕这个文件描述
      io表同样提供三种预定义的文件描述io.stdin,io.stdout,io.stderr
      2、文件句柄直接调用方式,即使用file:XXX()函数方式进行操作,其中file为io.open()返回的文件句柄
      多数I/O函数调用失败时返回nil加错误信息,有些函数成功时返回nil
      1、io.close ([file])
      功能:相当于file:close(),关闭默认的输出文件
      2、io.flush ()
      功能:相当于file:flush(),输出所有缓冲中的内容到默认输出文件
      3、io.lines ([filename])
      功能:打开指定的文件filename为读模式并返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回nil,并自动关闭文件
      若不带参数时io.lines() <=> io.input():lines(); 读取默认输入设备的内容,但结束时不关闭文件
      如:for line in io.lines("main.lua") do
      print(line)
      end
      4、io.open (filename [, mode])
      功能:按指定的模式打开一个文件,成功则返回文件句柄,失败则返回nil+错误信息
      mode:
      "r": 读模式 (默认);
      "w": 写模式;
      "a": 添加模式;
      "r+": 更新模式,所有之前的数据将被保存
      "w+": 更新模式,所有之前的数据将被清除
      "a+": 添加更新模式,所有之前的数据将被保存,只允许在文件尾进行添加
      "b": 某些系统支持二进制方式
      5、io.output ([file])
      功能:相当于io.input,但操作在默认输出文件上
      6、io.popen ([prog [, mode]])
      功能:开始程序prog于额外的进程,并返回用于prog的文件句柄(并不支持所有的系统平台)
      7、io.read (...)
      功能:相当于io.input():read
      8、io.tmpfile ()
      功能:返回一个临时文件句柄,该文件以更新模式打开,程序结束时自动删除
      9、io.type (obj)
      功能:检测obj是否一个可用的文件句柄
      返回:
      "file":为一个打开的文件句柄
      "closed file":为一个已关闭的文件句柄
      nil:表示obj不是一个文件句柄
      10、io.write (...)
      功能:相当于io.output():write
      11、file:close()
      功能:关闭文件
      注:当文件句柄被垃圾收集后,文件将自动关闭。句柄将变为一个不可预知的值
      12、file:flush()
      功能:向文件写入缓冲中的所有数据
      13、file:lines()
      功能:返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回nil,但不关闭文件
      如:for line in file:lines() do body end
      14、file:read(...)
      功能:按指定的格式读取一个文件,按每个格式函数将返回一个字串或数字,如果不能正确读取将返回nil,若没有指定格式将指默认按行方式进行读取
      格式:
      "*n": 读取一个数字
      "*a": 从当前位置读取整个文件,若为文件尾,则返回空字串
      "*l": [默认]读取下一行的内容,若为文件尾,则返回nil
      number: 读取指定字节数的字符,若为文件尾,则返回nil;如果number为0则返回空字串,若为文件尾,则返回nil;
      15、file:seek([whence][,offset])
      功能:设置和获取当前文件位置,成功则返回最终的文件位置(按字节),失败则返回nil加错误信息
      参数
      whence:
      "set": 从文件头开始
      "cur": 从当前位置开始[默认]
      "end": 从文件尾开始
      offset:默认为0
      不带参数file:seek()则返回当前位置,file:seek("set")则定位到文件头,file:seek("end")则定位到文件尾并返回文件大小
      16、file:setvbuf(mode,[,size])
      功能:设置输出文件的缓冲模式
      参数
      mode:
      "no": 没有缓冲,即直接输出
      "full": 全缓冲,即当缓冲满后才进行输出操作(也可调用flush马上输出)
      "line": 以行为单位,进行输出(多用于终端设备)
      最后两种模式,size可以指定缓冲的大小(按字节),忽略size将自动调整为最佳的大小
      17、file:write(...)
      功能:按指定的参数格式输出文件内容,参数必须为字符或数字,若要输出其它值,则需通过tostring或string.format进行转换

    字符串库为Lua提供简易的字符串处理操作,所有的字串操作都是以1为基数的(C以0),也可使用负向索引,最后一个索引为-1 ; 所有的函数都存放在string表,并且已建立元表(__index=string表)
      所以string.byte(s,i) <=> s:byte(i)
      1、string.byte(s [, i [, j]])
      功能:返回从i到j的字符所对应的数值(字符 到 ASCII值),i默认为1,j默认为i的值
      如:s="123456" s1,2) => 49 50
      --------------------------------------------------------------------------------
      2、string.char (···)
      功能:返回ASCII值参数对应的字符串
      如:string.char(49,50) => 12
      --------------------------------------------------------------------------------
      3、string.dump(function)
      功能:返回指定函数的二进制代码(函数必须是一个Lua函数,并且没有上值)
      --------------------------------------------------------------------------------
      4、string.find(s, pattern [, init [, plain]])
      功能:查找s中首次出现pattern的位置,如果找到则返回首次出现的起始和结束索引否则返回nil
      init:为搜索位置的起始索引,默认为1(也可以用负索引法表示)
      plain:true 将关闭样式简单匹配模式,变为无格式匹配
      --------------------------------------------------------------------------------
      5、string.format (formatstring, ···)
      功能:格式化字符串formatstring参数与C差不多
      其中:*, l, L, n, p, h不被支持
      c, d, E, e, f, g, G, i, o, u, X, x:接受数字参数
      q, s:接受字符串参数
      %q:为自动将对应参数字串中的特殊字符加上\
      如:string.format('%q', 'a string with "quotes" and \n new line')等于
      "a string with \"quotes\" and \
      new line"
      注:此函数不能接受字符串中间带\0的字符
      --------------------------------------------------------------------------------
      6、string.gmatch(s, pattern)
      功能:返回一个迭代函数,每次调用此函数,将返回下一个查找到的样式串对应的字符
      如: s = "hello world from Lua"
      for w in string.gmatch(s, "%a+") do
      print(w)
      end
      为 hello
      word
      from
      Lua
      字串到表的赋值
      t = {}
      s = "from=world, to=Lua"
      for k, v in string.gmatch(s, "(%w+)=(%w+)") do
      t[k] = v
      end
      --------------------------------------------------------------------------------
      7、string.gsub (s, pattern, repl [, n])
      功能:返回一个经repl替换pattern的字符串及替换的次数
      s:待替换的字串
      pattern:查找的字串
      repl:要替换的内容(可以为字串,表,函数)
      当repl为字符串时:进行对应字串的替换,%0~%9 %0为全匹配 %% 为%
      当repl为表时:
      当repl为函数时:每次查找到字符都将


    Lua5.1中数学库的所有函数如下表:

    abs         取绝对值         math.abs(-15)         15
    acos         反余弦函数         math.acos(0.5)         1.04719755
    asin         反正弦函数         math.asin(0.5)         0.52359877
    atan2         x / y的反正切值 math.atan2(90.0, 45.0)         1.10714871
    atan        反正切函数        math.atan(0.5)        0.463647609
    ceil        不小于x的最大整数        math.ceil(5.8)        6
    cosh        双曲线余弦函数        math.cosh(0.5)        1.276259652
    cos        余弦函数        math.cos(0.5)        0.87758256
    deg        弧度转角度        math.deg(math.pi)        180
    exp        计算以e为底x次方值        math.exp(2)        2.718281828
    floor        不大于x的最大整数        math.floor(5.6)        5
    fmod (mod)        取模运算        math.mod(14, 5)        4
    frexp        把双精度数val分解为数字部分(尾数)和以2为底的指数n,即val=x*2n        math.frexp(10.0)        0.625    4
    ldexp        计算value * 2的n次方        math.ldexp(10.0, 3)        80 = 10 * (2 ^3)        log10
    计算以10为基数的对数        math.log10(100)        2
    log        计算一个数字的自然对数        math.log(2.71)        0.9969
    max        取得参数中最大值        math.max(2.71, 100, -98, 23)        100
    min        取得参数中最小值        math.min(2.71, 100, -98, 23)        -98
    modf        把数分为整数和小数        math.modf(15.98)        15    98
    pow        得到x的y次方        math.pow(2, 5)        32
    rad        角度转弧度        math.rad(180)        3.14159265358
    random        获取随机数        math.random(1, 100)        math.random(100)        获取1-100的随机数
    randomseed        设置随机数种子        math.randomseed(os.time())        再使用math.random
    sinh        双曲线正弦函数        math.sinh(0.5)        0.5210953
    sin        正弦函数        math.sin(math.rad(30))        0.5
    sqrt        开平方函数        math.sqrt(16)        4
    tanh        双曲线正切函数        math.tanh(0.5)        0.46211715
    tan        正切函数        math.tan(0.5)        0.5463024





    上一篇:lua io库 转摘
    下一篇:双色球的秘密之随机!
  • ta_mind
    奋斗
    2016-5-25 04:04
  • classn_01: 5 classn_02

    [LV.2]偶尔看看I

    0

    主题

    101

    帖子

    139

    积分

    注册会员

    Rank: 2

    积分
    139
    发表于 2016-5-21 19:03:35 | 显示全部楼层
    谢谢楼主分享!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Archiver|小黑屋|sitemap|从零开始学编程 ( 豫ICP备15032706号-2 )

    GMT+8, 2017-4-27 09:18 , Processed in 1.125036 second(s), 32 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表