Как создать имя файла с текущей датой и временем в lua? - PullRequest
1 голос
/ 06 октября 2011

Я хочу записать таблицу в файл, названный по дате и времени ее создания. Я могу открыть файл с жестко закодированным именем, записать в него таблицу, как показано ниже:

FILENAME_EVENTS="Events.txt"            -- filename in string
local fp=io.open(FILENAME_EVENTS, a)        -- open a new file with the file name
io.output(FILENAME_EVENTS)      -- redirect the io output to the file
-- write the table into the file
for i, e in ipairs(eventlist) do io.write(e.title, e.category, e.ds, e.de, e.td) end

Но когда я пытаюсь:

FILENAME_EVENTS=os.date().."\.txt"          -- filename in string with date
local fp=io.open(FILENAME_EVENTS, a)        -- open a new file with the file name
io.output(FILENAME_EVENTS)      -- redirect the io output to the file
-- write the table into the file
for i, e in ipairs(eventlist) do io.write(e.title, e.category, e.ds, e.de, e.td) end

Я получил ошибку неверный аргумент №1 для «вывода» (06.10.11 17: 45: 01.txt: неверный аргумент) трассировка стека: [C]: в функции 'output'

Почему этот «10/06/11 17: 45: 01.txt» является недопустимым аргументом? из-за того, что содержит пробелы или '/'? Или какие-то другие причины?

Кстати, платформа Win7 Pro + Lua 5.1.4 для победы

1 Ответ

9 голосов
/ 06 октября 2011

Очевидно, что это и /, и : тот бор. Первый, вероятно, потому что он рассматривается как разделитель каталогов. Это можно продемонстрировать, как показано ниже:

fn=os.date()..'.txt'
print(io.open(fn,'w')) -- returns invalid argument

fn=os.date():gsub(':','_')..'.txt'
print(io.open(fn,'w')) -- returns nil, no such file or directory

fn=os.date():gsub('[:/]','_')..'.txt'
print(io.open(fn,'w')) -- returns file(0x...), nil <-- Works

Кстати, вместо использования странных трюков gsub и конкатенации, вы также можете рассмотреть возможность использования чего-то вроде

fn=os.date('%d_%m_%y %H_%M.txt')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...