R 中的 readLines 未读取完整的文本文件

readLines in R is not reading complete text file

提问人:Darth Ratus 提问时间:8/12/2023 最后编辑:Darth Ratus 更新时间:8/14/2023 访问量:42

问:

我在读取从控制台中运行的 Android Top 命令行导出输出时创建的文本文件时遇到问题。

我用来读取文件的脚本非常简单:

        file_to_read <- paste(folder,file,sep="/")
        myfile <- readLines(file_to_read)
        writeLines(myfile, paste(folder,(paste((paste("Read_File_", 1, sep="")),".txt", sep="")), sep="/"), useBytes = FALSE)

我正在保存使用不同名称读取的文件,当我比较两者时,我发现“Read_File”只是原始文件的一部分。我已经尝试过对捕获的许多文件进行此操作,大多数文件都显示相同的内容,只是部分读取。

现在,检查原始文件,在导出过程中添加了一堆额外的字符(是的,这是我的错误,我已经纠正了这个问题)。这些是与命令窗口中的颜色和其他内容相关的 ANSI 字符。

我注意到的一件事是,当以下字符出现在原始文件中时,[0mã«,这是readlines将导入的范围内,所以我认为这些组合是某种中断或EOF,或者告诉R停止导入或没有更多可读取的东西。

我所拥有的重现问题的文本文件中的最小部分被添加到问题的末尾。

我也尝试过使用 read.table 导入文件,但这也失败了,我只得到了部分导入。

我真的不知道这些额外的角色是什么。我所知道的一件事是,这些字符 [0mà 没有<<不会导致问题,所以不知何故,整个组合都是问题所在。

小费不胜感激。

有问题的文本部分(类似于其他文件):

   610 media        -2  -2  22M 3.3M 3.0M S 12.5   0.2 317:13.30 vpud -f

   417 system       -3  -8  72M 6.4M 5.1M S  9.3   0.3 215:31.44 surfaceflinger
[?25h[0m[1000;1H[K            [0më
   ~[----------
[s[999C[999B[6n[u[H[J[?25l[H[J[s[999C[999B[6n[uTasks: 288 total,   2 running, 286 sleeping,   0 stopped,   0 zombie

  Mem:  1702176K total,  1658740K used,  44478464 free,  20733952 buffers

 Swap:   425540K total,   414648K used,  11153408 free,   399640K cached

400%cpu  75%user   0%nice  75%sys 247%idle   0%iow   0%irq   3%sirq   0%host
r read.table 读取行

评论

1赞 I_O 8/12/2023
为什么不将文件复制到另一个名称?无论如何,您可以尝试使用参数显式指定编码 ,例如encoding = ...readLinesencoding = 'UTF-8'
0赞 Darth Ratus 8/12/2023
我添加了您的建议并在 Notepad++ 中打开了该文件,并注意到它指示 ANSI,因此我添加了命令 .它仍然不起作用。它用这种奇怪的字符组合读到那一行,而忽略了其余的。R 控制台现在还会在源文本文件中指示“找到不完整的最后一行”。encodingreadLinesencoding = 'ANSI'
1赞 Mark 8/12/2023
有几件事:1.在你的代码中,你说的是 ,但没有定义,2 也没有。当我将示例文本添加到文本文件,然后使用 readLines() 加载它时,它加载了整个内容(尽管它确实抛出了有关“找到不完整的最后一行”的错误消息)Read_FileRead_Filei
0赞 Darth Ratus 8/14/2023
嗨,马克先生,Read_File只是文件名的前缀,我用它来保存读取的内容,以确保文件被完整读取。由于脚本通过文件夹中的一组文件运行,因此我添加了下标 i,以确保读取的每个文件都有自己的名称,即 Read_File_1、Read_File_2 等。我已将“i”下标更改为仅 1,但其余部分保持不变,因为进行太多更改可能会破坏事情。您复制了我提供的数据并将其粘贴到 txt 文件中,并且脚本读取了所有内容而没有任何问题,这可能是解决此问题的唯一方法。

答: 暂无答案