2013-04-17 3 views
0

Я изучаю Prolog используя SWI-Prolog.Не удается получить доступ к файлу в Prolog

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

processFile(File) :- see(File), 
       processFile, 
       seen. 

processFile :- read(Query), 
       process(Query). 

process(end_of_file) :- !. 

process(Query) :- Query, 
        write(Query), 
       nl, 
       processFile. 

Проблема заключается в том, что, когда в оболочке Пролога, я пытаюсь выполнить оператор ProcessFile с именем файла я получаю ошибку:

Если я дам имя файла с расширением я получить это сообщение об ошибке (кажется, интерпретировать расширение как оператор):

7 ?- processFile(myFile.txt). 
ERROR: Syntax error: Operator expected 
ERROR: processFile(myFile 
ERROR: ** here ** 
ERROR: .txt) . 

Если я даю имя файла без расширения я получаю это другое сообщение об ошибке (файл не существует):

7 ?- processFile(myFile). 
ERROR: see/1: source_sink `myFile' does not exist (No such file or directory) 

Так я и пытаюсь создать новый файл с именем Myfile (без расширения) в той же папке, где находится исходный файл пролог код, но я еще раз получаем:

8 ?- processFile(myFile). 
ERROR: see/1: source_sink `myFile' does not exist (No such file or directory) 

Почему? где ошибка? Как я могу это решить?

+0

@closing_voters: причина закрытия не применяется. «Трудно сказать, что здесь задают». Это очень конкретный вопрос о конкретной проблеме с кодом OP. –

ответ

1

Необходимо указать имя файла.

processFile('myFile.txt'). 
+1

нет, не работает ... если я попробую: 5? - processFile ('myFile.txt'). ОШИБКА: см./1: source_sink 'myFile.txt 'не существует (нет такого файла или каталога) Я также пытаюсь создать файл в исходном каталоге, но не работает – AndreaNobili

8

Как сказал @larsmans, используйте одинарные кавычки.

Ошибка «не существует», если вы уверены, что файл существует, вероятно, из-за этого текущий рабочий каталог не тот, о котором вы думаете.

Попробуйте изменить текущий рабочий каталог там, где существует ваш .txt-файл с cd('directory-path-here').

+0

Если я что-то типа: 4 ? - cd ('C: \ Users \ Andrea \ Documents \ Prolog \ lezione6 \'). | | | | и он заблокирован (я не могу вставить другие статусы) – AndreaNobili

+4

@AndreaNobili пытается использовать символы косой черты '('C:/Users/...')' или двойные обратные косые черты '('C: \\ Users \ \ ... ') '. –

Смежные вопросы