国际访客建议访问 Primers 编程伙伴 国际版站点 > Lua 教程 > os-module 以获得更好的体验。

# Lua 的 OS 模块

请查看 Lua 标准库模块列表 了解更多相关 API。
函数 说明
os.clock 获取程序使用的 CPU 时间(单位为秒)
os.date 获取日期和时间
os.difftime 计算时间差
os.execute 执行命令
os.exit 终止主机程序
os.getenv 获取环境变量
os.remove 删除文件
os.rename 修改文件名
os.setlocale 修改区域设置
os.time 获取时间
os.titmpnameme 生成一个临时文件名

# os.clock

os.clock ()

!subtitle:说明

获取程序使用的 CPU 时间的近似值(以秒为单位),通过 C 语言标准库函数 clock 实现。

!subtitle:参数

!subtitle:返回值

  • 返回程序使用的 CPU 时间(秒)

# os.date

os.date ([format [, time]])

!subtitle:说明

格式化日期和时间。

!subtitle:参数

  • format - 格式;默认为 "%c",返回当前语言环境提供人类可读的日期和时间表示

    • "!" 开头时采用协调世界时间 (UTC) ,否则采用本地时间

    • 在可选的 "!" 之后,以 "*t" 开头时返回表,否则返回字符串

    • 此后格式和 C 语言标准库函数 strftime 保持一致

  • time - 时间(以秒为单位的时间戳);默认不带时间

!subtitle:返回值

  • 日期和时间的表或字符串

表的字段为:year(年),month(月,1–12),day(日,1–31),hour(时,0–23),min(分,0–59),sec(秒,0–61,含闰秒),wday(星期几,1–7,星期日为 1),yday(一年中的第几天,1–366) 和 isdst(夏令时标志,布尔值)。

# os.difftime

os.difftime (t2, t1)

!subtitle:说明

计算时间差 \(t2 - t1\),结果以秒为单位。

!subtitle:参数

  • t2 - 结束时间

  • t1 - 开始时间

!subtitle:返回值

  • 时间相差的秒数

# os.execute

os.execute ([command])

!subtitle:说明

执行命令 command,等效于 C 语言标准库函数 system

!subtitle:参数

  • command - 要执行的命令

!subtitle:返回值

  • 第一个返回值是一个布尔值,表示命令是(true)否(false)执行成功

  • 第二个返回值是一个字符串:

    • "exit" - 命令正常退出,下一个返回值是命令的返回值

    • "signal" - 命令被信号终止,下一个返回值是终止该命令的信号

  • 第三个返回值是一个整数,表示命令的返回值或终止该命令的信号

# os.exit

os.exit ([code [, close]])

!subtitle:说明

调用 C 语言标准库函数 exit 退出程序。

!subtitle:参数

  • code - 结束状态;默认为 true

    • true 时返回值为 EXIT_SUCCESS

    • false 时返回值为 EXIT_FAILURE

  • close - 是否关闭 Lua 状态

!subtitle:返回值

# os.getenv

os.getenv (varname)

!subtitle:说明

获取环境变量 varname 的值。

!subtitle:参数

  • varname - 环境变量的名称

!subtitle:返回值

  • 返回环境变量 varname 的值

  • 如果环境变量 varname 不存在则返回 nil

# os.remove

os.remove (filename)

!subtitle:说明

删除文件 filename

!subtitle:参数

  • filename - 要删除的文件

!subtitle:返回值

  • 成功时返回 true

  • 失败时返回 nil、错误信息以及错误码

# os.rename

os.rename (oldname, newname)

!subtitle:说明

将文件 oldname 重命名为 newname

!subtitle:参数

  • oldname - 要重命名的文件

  • newname - 新的文件名

!subtitle:返回值

  • 成功时返回 true

  • 失败时返回 nil、错误信息以及错误码

# os.setlocale

os.setlocale (locale [, category])

!subtitle:说明

设置程序的区域配置,参考 C 语言标准库函数 setlocale

!subtitle:参数

  • locale - 要设为的区域

    • nil - 不改变配置,仅返回给定类别的当前的区域

    • "" - 本机区域

    • "C" - 标准 C 区域设置

  • category - 要设置的区域配置类别;默认为 "all"

    • "all" - 全部

    • "collate" - 排序规则

    • "ctype" - 字符类型

    • "monetary" - 货币格式

    • "numeric" - 数值格式

    • "time" - 时间格式

!subtitle:返回值

  • 返回设置后的区域

# os.time

os.time ([table])

!subtitle:说明

获取时间。

  • 不带参数时返回当前时间

  • 带参数时返回 table 中指定的本地日期和时间

表的有效字段为:

  • year(年)

  • month(月,1–12)

  • day(日,1–31)

  • hour(时,0–23)

  • min(分,0–59)

  • sec(秒,0–61,含闰秒)

  • wday(星期几,1–7,星期日为 1)

  • yday(一年中的第几天,1–366)

  • isdst(夏令时标志,布尔值)。

表中的字段可以超出有效范围,例如 sec 为 -10 时表示比其他字段指定的时间早 10 秒。

!subtitle:参数

  • table - 本地日期和时间

!subtitle:返回值

  • 不带参数时返回当前时间

  • 带参数时返回 table 中指定的本地日期和时间

# os.titmpnameme

os.tmpname ()

!subtitle:说明

生成一个临时文件名。需要显式打开才能使用,并且需要手动删除。

!subtitle:参数

!subtitle:返回值

  • 返回临时文件名

# 推荐阅读

Operating System Facilities - Lua 5.4 Reference Manual

本文 更新于: 2025-11-27 09:38:13 创建于: 2025-11-27 09:38:13