如何逐行读取文本文件。可以使用下面的代码逐行读取 JSL 脚本(实际上 JMP 会创建一个列表,每行作为一个列表项)。
myFile= open("$PATH\testScript.jsl");
我的CfLines = myFile[scriptBox(1)] << getLines();
但是,当我尝试使用扩展名为“*.txt”的文本文件执行此操作时,JMP 会自动将其作为数据表打开,因此我无法使用此方法来获取行(因为它不是脚本框!)
还有其他方法吗? 我不想使用 loadTextFile() 函数,因为这会将整个文件抓取到字符串中。 理想情况下,我想打开文件,一次读入每一行,然后执行正则表达式来提取我需要的数据!
回复:如何逐行读取文本文件。JMP 不会流式传输文本文件。 您必须使用该解决方案来加载整个文件,然后分隔行。 您可以迭代列表中的项目(单独的行)以确定它们是否符合您的标准。
或者,您可以将文本文件导入 Excel 工作簿,然后使用“文件”>“数据库”>“打开表”或“文件”>“数据库”>“查询生成器”来定义 WHERE 子句以选择要提取的行。
回复:如何逐行读取文本文件。我有一个巨大的文本文件,但只想读取和加载几行。基本上想加载以 A_ 或 B_ 或 C_ 或 D_ 开头的所有行。 if条件可以吗?
回复:如何逐行读取文本文件。尽管我一开始对 loadTextFile 函数保持沉默,但还是要对 Jeff 表示感谢。 所有三种方法都有效,因此我使用我们的一位测试人员提供的 250M、5M 行文本文件进行了快速时间比较。 顺便说一句,我的用例是我需要逐行筛选这些巨大的日志文件,并根据正则表达式表过滤出一些结果。
我想这不公平,因为我说过我想避免 loadTextFile ;)
***伊恩***
myNumSeconds = 66;
N 项(myCfLines)= 5059756;
***杰夫***
myNumSeconds = 7;
N 项(myLines)= 5059755;
*** 克雷奇 ***
myNumSeconds = 67;
N 项(myCfLines)= 5059756;
回复:如何逐行读取文本文件。您可以打开一个“脚本”选项来完成这项工作:
打开(“$sample_data/../导入数据/bigclass.txt”,“脚本”)
现在,它将打开到一个脚本窗口,而不是作为“文本”打开(这是 .txt 扩展名的默认设置)并创建数据表。 是的,“文本”选项的命名很奇怪,但它指的是 CSV 文本。
回复:如何逐行读取文本文件。JSL 目前没有用于打开文件并一次读取一行的工具。
但是,如果您确实使用加载文本文件()那么你可以使用字()函数将各个行放入列表中。
bctxt=load text file ("$SAMPLE_IMPORT_DATA\Bigclass.txt");
lines=words(bctxt,"\!n");
回复:如何逐行读取文本文件。如您所见,JMP 使用文件扩展名来尝试执行适当的操作。
不确定我完全理解您的用例,但如果“.jsl”扩展名提供了您想要的行为,您可以考虑使用“RenameFile()”:
renameFile("$DESKTOP/Test.txt", "Test.jsl");
myFile = open("$DESKTOP/Test.jsl");
myCfLines = myFile[scriptBox(1)] << getLines();
renameFile("$DESKTOP/Test.jsl", "Test.txt");