在 Lua 中打开(创建)不存在的文件。

我试图将一个配置表(已解析为字符串)保存到一个刚刚创建的文件中。

local cfg_string = table.tostring(cfg_table)
local file_name = ""
local cfg_file = ""

file_name = com:line(nil)    --通过终端从用户读取输入行
file_name = string.format("some_prefix-%s-some_suffix.lua",file_name)
-- 此时文件不存在

cfg_file = io.open("/dir/subdir/"..file_name,"w")
-- 现在文件应该存在

os.syslog(type(file_name)) -> string
os.syslog(type(cfg_file)) -> nil
os.syslog(type(cfg_string)) -> string
cfg_file:write(cfg_string)

cfg_file:write(cfg_string) 报错 "attempt to call "write" a nil value"。 所以 cfg_file 是空 nil 的,我知道,但为什么呢?我还尝试了用 "a" 标志来 io.open(),但这也不起作用。目录存在!

感谢你们的帮助。

点赞
用户3911769
用户3911769

实际上,我的代码可以工作。错误是因为目录缺少写入权限而引起的。每个遇到这种错误的人都应该尝试以下内容

handle_name, err = io.open(file,"w")
print(err)
2014-08-27 06:44:03