Как сгенерировать файл, прочитав его имя в SWI-Prolog?
Я пишу программу swi-prolog, которая читает имя файла, открывает его и пишет что-то еще.
main :- read(FileName),
tell(FileName),
write("Some stuff"),
told.
Это работает, но я должен указать имя файла как "name". "Type" ", например:
?- main.
|: 'Hello.txt'.
true.
Мне нужна программа, чтобы получить имя таким образом, без единой кавычки:
?- main.
|: Hello.
true.
И тип файла должен быть поставлен мной:
$ ls
Hello.«whatever»
Есть идеи? Спасибо
1 ответ
Учитывая, что вы используете SWI-Prolog, вы можете использовать readutil:read_line_to_codes/2
предикат библиотеки:
?- use_module(library(readutil)).
true.
?- current_input(Stream), read_line_to_codes(Stream, FileNameCodes), atom_codes(FileName, FileNameCodes).
|: Foo
Stream = <stream>(0x10516c440),
FileNameCodes = [70, 111, 111],
FileName = 'Foo'.
Если вам также необходимо добавить расширение имени файла к прочитанному имени файла, используйте стандарт atom_concat/3
сказуемое.