Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python重新打开文件?_Python_File - Fatal编程技术网

用Python重新打开文件?

用Python重新打开文件?,python,file,Python,File,假设我有一个简单的python脚本: file = open('C:\\some_text.txt') print file.readlines() print file.readlines() 运行时,第一次打印打印包含文件文本的列表,而第二次打印打印空白列表。我想这并不完全出乎意料。但是有没有一种方法可以“回卷”文件以便我可以再次阅读?或者是重新打开它的最快方法?您可以通过调用以下命令重置文件指针: 我会的。在第一行readlines()之后需要该行。请注意,文件必须支持随机访问才能使上述

假设我有一个简单的python脚本:

file = open('C:\\some_text.txt')
print file.readlines()
print file.readlines()

运行时,第一次打印打印包含文件文本的列表,而第二次打印打印空白列表。我想这并不完全出乎意料。但是有没有一种方法可以“回卷”文件以便我可以再次阅读?或者是重新打开它的最快方法?

您可以通过调用以下命令重置文件指针:


我会的。在第一行
readlines()
之后需要该行。请注意,
文件
必须支持随机访问才能使上述内容正常工作。

对于小文件,将文件内容保存在内存中可能会快得多

file = open('C:\\some_text.txt')
fileContents = file.readlines()
print fileContents
print fileContents # This line will work as well.

当然,如果它是一个大文件,这可能会给RAM带来压力。

请记住,始终可以使用with语句打开和关闭文件:

from __future__ import with_statement

with open('C:\\some_text.txt') as file:
    data = file.readlines()
#File is now closed
for line in data:
    print line

您可以尝试
file.close()
open
vs.
file.seek
并报告所学内容。然后我们可以对你的结果发表评论。嘿,怪兽!如果阿洛克的回答回答了你的问题,请按他回答左边的勾号。这标志着它是“正确的答案”,这样将来其他人就会知道它是有效的。此外,它还为您提供了额外的信誉分数:-)我对一个170k文件进行了一次快速测试,测试时间几乎相同,每个都只有几毫秒。所以没有“最快的”?这就是底线吗?太棒了。让我想起了古老的古老的偷窥和戳东西与古老的C64!我想这是标准的POSIX接口。@Stefano:我想你是对的seek()很可能是围绕
fseek()
或类似内容的薄型包装。它正是操作系统调用。与基本的偷看和戳无关。没有什么。
from __future__ import with_statement

with open('C:\\some_text.txt') as file:
    data = file.readlines()
#File is now closed
for line in data:
    print line