目录
以下是 Lua 中 os
模块的常用函数详解,涵盖时间、系统交互、文件操作等功能:
os.clock()
- 作用:返回程序使用的 CPU 时间(单位:秒),常用于性能测试。
- 示例:
local start = os.clock() -- 执行耗时操作 for i = 1, 1e6 do end print(os.clock() - start) --> 输出耗时(如 0.02)
- 注意:返回的是 CPU 时间(非实际时间),结果因操作系统和 Lua 版本而异。
os.date([format [, time]])
- 作用:将时间戳转换为可读字符串或表。
format
:格式化字符串(默认"%c"
,如"%Y-%m-%d %H:%M:%S"
)。time
:时间戳(默认当前时间)。- 特殊格式
"*t"
返回包含时间字段的表。
- 示例:
print(os.date()) --> "Thu May 16 12:34:56 2024" print(os.date("%Y-%m-%d")) --> "2024-05-16" local t = os.date("*t", 1715856000) -- 返回表:{year=2024, month=5, day=16, ...}
os.difftime(t2, t1)
- 作用:计算两个时间戳的差值(单位:秒)。
- 示例:
local t1 = os.time({ year=2024, month=5, day=1}) local t2 = os.time({ year=2024, month=5, day=16}) print(os.difftime(t2, t1)) --> 1296000(15天的秒数)
os.execute(command)
- 作用:执行系统命令,返回状态码(成功时通常为
0
)。 - 示例:
local success = os.execute("mkdir my_folder") -- 创建目录 print(success) --> 0(成功)
- 注意:命令字符串需符合操作系统语法(如 Windows 用
dir
,Linux/macOS 用ls
)。
os.exit([code [, close]])
- 作用:终止程序运行。
code
:退出状态码(默认0
表示成功)。close
:是否关闭资源(默认false
,若为true
会尝试清理)。
- 示例:
if error_occurred then os.exit(1) -- 非正常退出 end
os.getenv(varname)
- 作用:获取系统环境变量的值,变量不存在时返回
nil
。 - 示例:
print(os.getenv("PATH")) --> 输出系统 PATH 环境变量 print(os.getenv("MY_VAR")) --> nil(若未定义)
os.remove(filename)
- 作用:删除文件,成功返回
true
,失败返回nil
和错误信息。 - 示例:
local ok, err = os.remove("temp.txt") if not ok then print(err) end
os.rename(oldname, newname)
- 作用:重命名或移动文件,成功返回
true
,失败返回nil
和错误信息。 - 示例:
os.rename("old.txt", "new.txt") -- 重命名 os.rename("file.txt", "backup/file.txt") -- 移动(需目标目录存在)
os.setlocale(locale [, category])
- 作用:设置程序的区域设置(影响日期、货币格式等)。
locale
:区域字符串(如"en_US"
或"C"
)。category
:选项(如"all"
、"collate"
、"ctype"
,默认"all"
)。
- 示例:
os.setlocale("en_US") -- 设置为美式英语区域
os.time([table])
- 作用:将时间表转换为时间戳(默认返回当前时间戳)。
- 时间表需包含
year
、month
、day
,可选hour
、min
、sec
。
- 时间表需包含
- 示例:
local t = { year=2024, month=5, day=16, hour=12} print(os.time(t)) --> 1715856000(对应的时间戳)
os.tmpname()
- 作用:生成唯一的临时文件名(不创建文件),需手动删除。
- 示例:
local tmp = os.tmpname() local f = io.open(tmp, "w") f:write("temp data") f:close() os.remove(tmp)
- 注意:存在安全风险(竞态条件),推荐优先使用
io.tmpfile()
。
总结
- 时间处理:
os.clock()
用于性能分析。os.date()
和os.time()
处理时间格式化与转换。
- 文件操作:
os.remove()
和os.rename()
管理文件。os.tmpname()
生成临时文件名(需谨慎使用)。
- 系统交互:
os.execute()
执行系统命令。os.getenv()
读取环境变量。
- 程序控制:
os.exit()
终止程序运行。
注意:os
模块的部分函数(如 os.execute
、os.remove
)可能受操作系统权限限制,需处理错误返回值。