在Prolog中逐行读取文件

2023-12-09

我想读取一个纯文本文件并对每一行应用一个谓词(谓词包含write其输出)。我该怎么做呢?


您可以使用read读取流。记得调用at_end_of_stream以确保没有语法错误。

例子:

读文件.pl

main :-
    open('myFile.txt', read, Str),
    read_file(Str,Lines),
    close(Str),
    write(Lines), nl.

read_file(Stream,[]) :-
    at_end_of_stream(Stream).

read_file(Stream,[X|L]) :-
    \+ at_end_of_stream(Stream),
    read(Stream,X),
    read_file(Stream,L).

我的文件.txt

'line 0'.
'line 1'.
'line 2'.
'line 3'.
'line 4'.
'line 5'.
'line 6'.
'line 7'.
'line 8'.
'line 9'.

因此通过调用main您将收到输出:

?- main.
[line 0,line 1,line 2,line 3,line 4,line 5,line 6,line 7,line 8,line 9]
true 

只需配置main。这里的输出是使用的示例write, 当然。配置以满足您的要求。

我想这个原则可以用来回答你的问题。祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Prolog中逐行读取文件 的相关文章

  • 纯 Fortran 过程中的 I/O

    我正在尝试将错误检查合并到我正在编写的纯过程中 我想要这样的东西 pure real function func1 output unit a implicit none integer a output unit if a lt 0 th
  • 适合从记录中提取 OneToMany 关系的约束编程

    也许有人可以帮助我解决 Prolog 或任何约束编程语言的问题 想象一个项目表 学生与母亲一起做某事的学校项目 每个项目都有一名或多名儿童参与 对于每个孩子 我们存储其姓名及其母亲的姓名 但对于每个项目 只有一个包含所有母亲的单元和一个包含
  • 导入 csv 文件数据以填充 Prolog 知识库

    我有一个 csv 文件example csv其中包含两列 标题为 var1 和 var2 我想填充一个最初为空的 Prolog 知识库文件import pl具有重复的事实 而每一行example csv处理方式相同 fact A1 A2 f
  • java IO将一个文件复制到另一个文件

    我有两个 Java io File 对象 file1 和 file2 我想将 file1 的内容复制到 file2 有没有一种标准方法可以做到这一点 而无需我创建一个读取 file1 并写入 file2 的方法 不 没有内置方法可以做到这一
  • SWI Prolog 使用的检查优化会发生什么情况?

    去引用SICStus Prolog 手册 https sicstus sics se sicstus docs 3 12 9 html sicstus Occur html 逻辑编程背后的通常数学理论禁止 创建循环项 规定发生检查应该是 每
  • 在java中将StreamWriter转换为OutputStream?

    我正在尝试使用 System setOut 将 System out 重定向到字符串 它需要一个 PrintStream 有什么方法可以将 StringWriter 转换为 Stream 以便我可以将其传递给 setOut 吗 你不能完全这
  • F# 和模糊逻辑

    我知道这可能听起来很奇怪 但我想知道 Microsoft Visual F 正在进入的这个新世界中的一件事 这种语言有很多应用 我要学习 关于解析 函数式编程 结构化编程 但是人工智能呢 模糊逻辑有什么应用吗 F 是一种适合模糊逻辑应用程序
  • 对 os.listdir 文件进行排序 Python

    如果已下载数年的数据 这些数据存储在具有以下命名约定的文件中 year day dat 例如 名为 2014 1 dat 的文件包含 2014 年 1 月 1 日的数据 我需要按天排序读取这些数据文件 2014 1 dat 2014 2 d
  • 斜线(/)在序言中做什么?

    我有这个代码 set value X Value X T X Value T set value X Value Y V T Y V NewT X Y set value X Value T NewT set value X Value X
  • Prolog:子句在源文件中不在一起

    我有这段代码 Family tree female pen male tom male bob female liz female pat female ann male jim parent pam bob parent tom bob
  • 在 SWI Prolog 中使用 process_create/3 使用命令提示符或 shell 时出错

    在 Windows 7 上 当我在 SWI Prolog 中使用 process create 3 打开 Notepad exe 等应用程序时 记事本将打开 但是 它不适用于使用命令提示符的应用程序 例如 当我尝试打开命令提示符窗口时 使用
  • Prolog中如何选择bagof、setof和findall

    如何在 bagof setof 和 findall 之间做出选择 有什么重要的区别吗 哪个最常用 哪个最安全 感谢您的评论 回答 我检查了SWI Prolog 手册页findall 3 http www swi prolog org pld
  • 查找相邻成员

    我必须找出列表中的两个成员是否相邻 限制是使用append 3谓词 到目前为止 我已经完成了下面的操作 如果它是真的 它就有效 否则我得不到答案 就像它永远运行一样 adjacent X Y L append L1 X Y T1 appen
  • 在 Ruby 控制台应用程序中获取键盘事件(无需按“Enter”输入)的最佳方法是什么?

    我在互联网上寻找这个答案已经有一段时间了 发现其他人也在问同样的事情 即使在这里也是如此 因此 这篇文章将介绍我的案例以及对我找到的 解决方案 的回应 我对 Ruby 很陌生 但出于学习目的 我决定创建一个 gem here https g
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • Prolog - 如何从输入文件的给定列表中创建变量列表?

    我有一个输入谓词将文件作为列表读取 输入 文件名 列表 该列表的格式将是 9 字面意思就是下划线字符 在这里 不是一个通配符 问题是我如何编写谓词 pred List List2 然后转换所有 进入变量但保留9还在同一个位置吗 所以如果我输
  • MPI 从文本文件中读取

    我正在学习 MPI 编程 我遇到了这个问题 假设我有一个包含 100 000 行 行的 txt 文件 如何将它们分块以供 4 个处理器处理 即我想让处理器 0 负责第 0 25000 行的处理 让处理器 1 负责第 25001 50000
  • 一次性删除不正确的后续解决方案

    我有一个谓词 它找到正确的解决方案 但随后又找到不正确的解决方案 data D data threshold nonredundantbumps D 5 Bs write D 3 6 7 8 2 4 5 6 9 4 7 3 D 3 6 7
  • Java - 了解 PrintWriter 和刷新的需要

    好吧 首先我对所有代码表示歉意 但我觉得代码太多总比代码不够好 我正在制作一个简单的聊天客户端和印刷机 尤其是我正在努力解决的问题 使用现在的代码 它将与服务器类交互 并且完美地打印我想要打印的内容 但是 当我删除 writer flush
  • 如何让 Prolog 解释你的结果超出真实的陈述

    我有以下事实和规则 flight sea msp flight msp jfk route A B flight A B route B A flight A B route A C flight A B flight B C 当查询rou

随机推荐

  • 在文本框中反向书写

    我想像乌尔都语一样在文本框中以相反的顺序输入 是否有任何输入属性来做到这一点或任何代码 方向 rtl 只从末尾开始 但输入文本是原来的 它不会反转在文本框中查找 只需使用简单的 CSS input type text text align
  • 如何检测 Web 应用程序是否正在 Electron 中运行

    我正在尝试在电子应用程序上提供真正的反应应用程序 这并不意味着我正在使用 React 开发电子应用程序 我创建了一个反应应用程序并将其注入到电子应用程序中 与 Slack 一样 它将充当 Web 应用程序和桌面应用程序 但我对发送桌面通知感
  • istream >> ostream << 使用 * 指针重载运算符

    如果 gt gt 和 在标题中 friend std istream operator gt gt std istream ins Classname e friend std ostream operator lt lt std ostr
  • 如何根据确定的属性值对 JavaScript 中的对象数组进行排序?

    所以我有这个通知对象数组 必须按严重性降序排序 即Error gt Warning gt Information Example var notificationArray code 103 severity Error code 104
  • Java switch语句多种情况

    只是想弄清楚如何在 Java switch 语句中使用多种情况 这是我正在尝试做的一个例子 switch variable case 5 100 doSomething break 与必须做的事情相比 switch variable cas
  • 给定年、月、日、周数如何查找日期?(基于Sql Server 2005集)

    给定年 月 日 周数 如何查找日期 例如 year 2010 month Feb day Wed week number 4 how can I find that the date is 24 02 2010 Thanks 尝试这个 gi
  • 在 Spring Security Oauth2 中使用 RemoteTokenServices 配置资源服务器

    我正在尝试使用 spring security oauth2 实现授权服务器和资源服务器 到目前为止 我已经成功设置了授权服务器 并且由于我不想共享 jdbc 令牌存储 所以我尝试使用 remoteTokenService 来验证我的令牌
  • 为什么这个数据绑定不起作用?

    我有一个包含点列表的 ViewModel 类 我试图将其绑定到折线 折线拾取初始点列表 但即使我实现了 INotifyPropertyChanged 也不会注意到何时添加其他点 怎么了
  • 初始化二维字符数组

    我试图用这个颂歌初始化二维字符数组 int x 4 int y 4 char plg x y o o o o o o o o o o o o o o o o 但是这段代码会抛出错误error excess elements in char
  • 如何让 MSI 安装程序在卸载服务时运行一些代码

    我在卸载服务时遇到了一些问题 我想执行一些操作 我已将代码添加到 System ServiceProcess ServiceProcessInstaller BeforeUninstall 事件中 并且到覆盖方法 OnBeforeUnins
  • 将 HttpClient 与 SSL 和证书结合使用

    虽然我已经熟悉 HTTPS 和 SSL 的概念 但我最近开始一些开发 发现我有点困惑 要求是我编写一个小型 Java 应用程序 该应用程序在连接到扫描仪的机器上运行 扫描文档时 会拾取该文档并将文件 通常为 PDF 通过互联网发送到我们的应
  • Python 检测 EOF

    我正在尝试在读取 csv 文件时编写这样的 if 语句 if row or EOF do stuff 我在网上搜索过 但找不到任何方法可以做到这一点 帮助 with open fname rb as f for line in f line
  • ios9 拍照时仅显示空白屏幕

    我希望使用 IOS 9 手机的访问者能够通过网页将图片上传到我的网络服务器上 在 iOS 8 及之前的版本中 这可以通过使用 input 元素简单地实现
  • Java支持多重继承吗?

    从 Java 的事实来看 Java 中的所有类都有一个父类Object 但是同样的Java说它不支持多重继承 但是这段代码是什么意思呢 public class A extends B Blah blah blah 从上面的代码来看 这意味
  • Python __call__ 特殊方法实例

    我知道 call 当调用类的实例时 会触发类中的方法 但是 我不知道什么时候可以使用这种特殊方法 因为可以简单地创建一个新方法并执行在 call 方法 您可以调用方法 而不是调用实例 如果有人给我这种特殊方法的实际用法 我将非常感激 本示例
  • 类型错误:使用 pandas apply 和 lambda 时,字符串索引必须是整数

    我有一个数据框 一列是 URL 另一列是名称 我只是尝试添加第三列 该列接受 URL 并创建 HTML 链接 专栏newsSource有链接名称 并且url有网址 对于数据框中的每一行 我想创建一个具有以下内容的列 a href newsS
  • 获取导致 SQLiteConstraintException 的约束名称

    如何获取导致 SQLiteConstraintException 的约束的名称 在异常上调用 toString 只会给我 错误代码 19 约束失败 并且异常中没有方法可以获取原因 这使得调试我的sql变得相当困难 从版本开始3 7 17 S
  • 使用 Vega Lite 显示已经聚合的数据

    我正在尝试显示随时间变化的总和的堆积条形图 数据看起来像这样 date 12345 sumA 100 sumB 150 我将 x 轴编码为 日期 字段 我需要将日期 12345 的条形图堆叠起来 其中一部分高 100 另一部分高 以另一种颜
  • 在 C# 中从 DataGridView 更新 SQL 数据库

    有一些关于此的教程 但我假设我一定实现了错误 因为我从组合教程中遵循的代码无法正常工作 这些是教程 https youtu be i4mYXSaD4w https youtu be sB0A6FIhUM 我正在尝试创建一个显示一些基本数据的
  • 在Prolog中逐行读取文件

    我想读取一个纯文本文件并对每一行应用一个谓词 谓词包含write其输出 我该怎么做呢 您可以使用read读取流 记得调用at end of stream以确保没有语法错误 例子 读文件 pl main open myFile txt rea