Discuss / Python / 请大家看这个

请大家看这个

Topic source

渡俊

#1 Created at ... [Delete] [Delete and Lock User]

from io import StringIO f = StringIO("1\n2\n3") print(f.read()) f.write("\n4\n5\n6")

print(f.getvalue()) f.seek(0) print(f.readline()) while True: s = f.readline() if s == "": break print(s.strip()) 结果是大家能理解的?

houbo111

#2 Created at ... [Delete] [Delete and Lock User]
额,在上一个里的回复里想错了-。-!
f.write()是完全按照stream position来写的,这里因为有了
print(f.read())操作,所以这个操作结束时stream postion是指向f流原来文件的末尾的,所以f.write()不会覆盖f原有文件。
如果没有print(f.read())操作,那么stream position就是指向f原有文件开头,那么f.write()就会把f原有文件覆盖。
所以感觉其实StringIo可以同时读写,比如:

from io import StringIO
f=StringIO('12345')
f.seek(5)
f.write('abcdef')
f.seek(0)# or print(f.getvalue())
print(f.read())

  • 1

Reply