|
|
1
9
您可以使用上述代码,然后:
这将为您提供一个包含除最后一行以外的所有行的行数组。 |
|
|
2
60
因为我经常处理许多千兆字节的文件,所以在回答中提到的循环不适用于我。我使用的解决方案:
|
|
|
3
6
这不使用python,但如果这是您唯一想要的任务,那么python是该作业的错误工具。您可以使用标准*nix实用程序
它将把文件名的最后一行复制到newfile。 |
|
|
4
4
假设您必须在python中这样做,并且您有一个足够大的文件,而列表切片还不够,那么您可以在一次文件传递中这样做:
不是世界上最优雅的代码,但它可以完成任务。 基本上,它通过最后一个行变量缓冲文件中的每一行,每个迭代输出上一个迭代行。 |
|
5
3
在系统上 file.truncate() 你可以这样做:
根据我的测试,当按行读取时,file.tell()不起作用,可能是因为缓冲会混淆它。这就是为什么要把这些线的长度加起来计算位置。注意,这只适用于行分隔符以'\n'结尾的系统。 |
|
|
6
1
以下是我针对Linux用户的解决方案:
不需要在python中读取和迭代文件。 |
|
|
7
1
在之前的文章中,我提出了以下观点:
|
|
|
8
0
虽然我还没有测试过(请不要恨这个),但我相信有一个更快的方法。它更像是一个C解决方案,但在Python中是完全可能的。也不是蟒蛇。我想说,这是一种理论。 首先,您需要知道文件的编码。将变量设置为该编码中字符使用的字节数(1字节为ASCII)。 字符大小 (为什么不呢?)可能是一个1字节的ASCII文件。 然后抓取文件的大小,设置 文件化 对它。 假设您在 文件添加 . 添加 文件化 到 文件添加 . 移动backwords(增量为-1***charsize**),测试每个charsize字节的\n(或系统使用的任何换行符)。当您到达第一行\n时,您现在拥有文件第一行的起始位置。将\n替换为\x1a(26,用于eof的ASCII,或是您的系统/使用编码的任何内容)。 根据需要清理(更改文件大小,触摸文件)。 如果这能像我猜想的那样工作,你就可以节省很多时间,因为你不需要从一开始就通读整个文件,而是从最后读。 |
|
|
9
0
这是另一种方法,不用把整个文件拖进内存
|
|
|
10
0
这里有一个更通用的内存效率解决方案,允许跳过最后的n行(如
|
|
Earlien · 将解析文本中的加号作为ggplot2运算符进行求值 2 年前 |
|
|
user54097 · 滚动菜单项上的导航栏动画文本徽标 2 年前 |
|
|
Dawken · 从文本中提取字符串表情符号 2 年前 |
|
|
stack programming · 如何将损坏的文本恢复为阿拉伯语 2 年前 |
|
|
user25445882 · ggplot2文本位于上边距,翻转坐标 2 年前 |