请问为什么指针不能回到文本开头?
大家好,我有一个如下的文本文档,需要从头开始读取文本,我使用了如下代码with open('L1_1.txt') as f:f.seek(0, 0)
for line in f:
print(line)
本来应该是从文本的第一行开始读取,也就是:
LocalTime=21:48:16.153,Message=L1DB,MarketTime=08:46:10.794......
但实际上代码是从文本中间开始读取的,而且每次开始读取的位置都还不一样。截图如下
请问这是为什么?我明明已经使用了f.seek()把指针移动到开头位置,而且用f.tell()查看的话结果确实是0,那么就应该是在文本开头啊
麻烦各位大大帮忙看看,谢谢!
你的代码是没有问题的,f.seek(0, 0)确实是将文件指针移动到了文本的开头位置,但是在读取文件的时候,文件指针会随着读取操作自动向后移动。所以在for循环中每次读取一行后,文件指针会自动移动到下一行的位置。
你可以在循环外使用f.tell()打印文件指针的位置,可以看到它在循环开始时是0,在每次循环结束后递增的。
如果你想让文件指针在循环结束后回到开头位置,可以将文件对象重新赋值给一个变量,然后在循环结束后再次使用seek方法将文件指针移动到开头位置,如下所示:
with open('L1_1.txt') as f:
for line in f:
print(line)
f.seek(0, 0)
for line in f:
print(line)
这样就可以在第二个循环中从文件开头位置开始读取了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 {:10_257:}{:10_257:}{:10_257:} 顶一下 一般就不需要操作指针,一打开后的本来就是从第一行第一个字节开始的读取的。
你说它从中间开始读,可能是你前面操作了指针位置,然后 文件流 又没 close() 的缘故。。
试试重启IDE,只用 with open('L1_1.txt') as f:
# f.seek(0, 0)# 不需要
for line in f:
print(line)
阿奇_o 发表于 2023-12-18 15:12
一般就不需要操作指针,一打开后的本来就是从第一行第一个字节开始的读取的。
你说它从中间开始读,可能是 ...
谢谢回复,我发现代码是正常的,因为直接用python自带的IDLE运行时,文本是直接从头开始读取的,只有在pycharm里读取时才会从中途开始读,机器人说这是pycharm的配置问题引起的,给了一个更改配置的步骤
1. 打开 PyCharm,并选择菜单栏中的 "Run" -> "Edit Configurations"。
2. 在弹出的对话框中,选择你的运行配置文件。
3. 在右侧的 "Configuration" 标签页中,找到 "Execution" 部分。
4. 在 "Execution" 部分,将 "Run with Python console" 的选项取消勾选。
5. 确定保存,并重新运行代码。
参考这个之后问题还是没解决,不知道哪儿没对 能 {:10_254:} 育碧{:10_254:} {:5_102:}
页:
[1]