我有下面的代码:
>>> from pathlib import Path
>>> path = Path(r"C:Usersslashtest.txt")
>>> f = path.open(encoding="utf-8")
>>> f
<_io.TextIOWrapper name="C:\Users\slash\test.txt" mode='r' encoding='utf-8'>
>>> f.read()
'Test line 1nTest line 2nTest line 3n'
>>> f.read()
''
你们能向我解释一下这里的行为吗?看起来TextIOWrapper只能读一次?
有没有时间多次阅读直到我写完?
谢谢。
>>> from pathlib import Path
>>> path = Path(r"C:Usersslashtest.txt")
>>> f = path.open(encoding="utf-8")
>>> f
<_io.TextIOWrapper name="C:\Users\slash\test.txt" mode='r' encoding='utf-8'>
>>> f.read()
'Test line 1nTest line 2nTest line 3n'
>>> f.read()
''
我在等你。TextIOWrapper可以多次读取
>>> f.read()
'Test line 1nTest line 2nTest line 3n'
>>> f.read()
''
假设您的f
对象只是一个光标。一旦光标结束了对文件的读取,您就必须将其重新读取到开头。
您可以使用带有参数(0, 0)
的方法seek
来执行此操作。
>>> f.read()
'Test line 1nTest line 2nTest line 3n'
>>> f.seek(0,0)
>>> f.read()
'Test line 1nTest line 2nTest line 3n'