綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[教程] LUA中的作業系統庫介紹

[複製連結] 查看: 4626|回覆: 1|好評: 1
跳轉到指定樓層
樓主
swx_9003 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-12-10 11:14

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
這個庫通過表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
", 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 M​​ay
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 SettingsaiyunApplication Data
C:Documents and SettingsAll Users
C:Program FilesCommon Files
BAIYUN
baiyun
C:Documents and Settingsaiyun
C:WINDOWSsystem32cmd.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~1aiyunLOCALS~1Temp

os.remove (filename)
功能:刪除文件或一個空目錄,若函數調用失敗則返加nil加錯誤信息


os.rename (oldname, newname)
功能:更改一個文件或目錄名,若函數調用失敗則返加nil加錯誤信息

os.setlocale (locale [, category])
功能:設置程序的當前設置,函數返回最新的值,失敗則返回nil
參數:
locale:一個指定當前設置的字串
"":一個空字串,當前設置被視為本地設置
"c":當前設置被視為標準c設置
nil:返回category指示設置名的當前值
category:一個描述要更改的設置名
"all"[默認], "collat​​e", "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])
功能:打開指定的文件fil​​ename為讀模式並返回一個迭代函數,每次調用將獲得文件中的一行內容,當到文件尾時,將返回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
new line")等於
  "a string with "quotes" and
  new line"
注:此函數不能接受字符串中間帶的字符
-------------------------------------------------- ------------------------------
  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
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
zera4321 + 1 + 1 很給力!

查看全部評分

收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
antrbangy | 收聽TA | 只看該作者
發表於 2014-9-9 21:59
請教下面這個指令,可以在脚本內控制(wifi或3G) 中斷 及 啟動 嗎?..謝謝
os.execute ([command])
功能:相當於C的system函數,返回系統狀態碼
例如:
os.execute("pause")
輸出:
按任意鍵繼續. . .

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則