Discuss / Python / StringIO and BytesIO

StringIO and BytesIO

Topic source

Dr_v3n

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

如果你用file-like object的方法查看的时候,你会发现数据为空

sio = StringIO() sio.write(s) for i in sio.readlines(): print(i.strip())

这里我试了试是可以打印的啊,为什么说为空呢?

Dr_v3n

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

看错了,确实是为空的~

冼杰恒

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

a = StringIO('abcdefg') a.getvalue() 'abcdefg' a.write('12') 2 a.getvalue() '12cdefg'

这里的a.write('12') 为什么不会覆盖原来的'abcdefg'???

那我用变量赋值字符串呢 是一样的道理吗

感谢总结

七楼带偏了啊。。。

sio = StringIO('abc') #这里是初始化,指针指向0 sio.getvalue()'abc'

sio = StringIO('def')

这俩sio根本就不是同一个好吧,所以每次指针都执行0

一盒噪噪

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

感谢楼上

补充一点:指针是否移动跟初始化的时候是否传入字符串无关,

使用write方法可以移动指针,返回值即指针的步数,步数=len(字符串)

指针指向的并不是字符的右边或左边,而是指向了这个字符串,像变量名一样,指向某个对象(指针指向的是对象)

所以你用seek方法把指针移动到某一个位置时,再用write方法写入,会替换掉这个指针原来指向的对象

一盒噪噪

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

指针在初始化的时候指向0

一盒噪噪

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

更改一下:我觉得write的返回值是len(字符串),并不是指针步数,因为...指针好像没有步数??不太懂这个,有人知道吗

stringIO和BytesIO   马克


Reply