元类看不进去
然后 既然我在看路径的时候接触了os内库
那就让我来看看IO编程吧 比较好理解..
Python内置的os模块可以直接调用操作系统提供的接口函数
所以我觉得io模块就可以看成是可以直接调用内存提供的接口函数
读写之类的具体操作方法我在内置函数篇下面已经写过啦,所以这里只补充之前不知道哒~
1.使用with语句操作文件IO是个好习惯。
with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。python with的相关知识
然而我只看了我这里用到的一种用法。
值得注意的是:
我在写入文件的时候,是重新开始写而不是在后面添加,且会返回字符数
但是为什么调用stringIO的时候 就可以输出一整串呢?
代码如下:
>>> with open('Desktop/python/test.py','r') as f:
... f.read()
...
"#!/usr/local/Cellar/python3/3.6.1/bin/python3\n\ndef m(x):\n print('1')\n return 3*x\n print('6')\n\na = m(10) #输出1\nprint('分割')\nprint(a) #输出30\nprint('分割')\nm(10) #输出1\nprint('分割')\nprint(m(10)) #输出 1 30\n\n"
>>> with open('Desktop/python/test.py','w') as f:
... f.write("测试")
...
2```
然后我的文件里就只有测试两个字啦
from io import StringIO
f = StringIO()
f.write('Hello')
5
f.write(' ')
1
f.write('world')
5
print(f.getvalue())
Hello world```
然后我就这样测试了一下
>>> with open('Desktop/python/test.py','w') as f:
... f.write("测试")
... f.write('再一次测试')
...
2
5
>>> f.write('test')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.
>>>```
2.我的理解猜想:
stringio在import的时候被打开,可以多次传入数据,在被读取以后就重新变成了空的,相当于我们把内存里的东西取出来了,就空啦。
文件的w状态相当于创建了一个内存,往内存中输入数据。结束w的时候把内存中的数据全部输入文件然后两者均关闭,且文件中的原数据都会没掉,因为输入时会整个代替掉。读取的时候也是如此,反一反,把文件中的数据弄到内存中,调出来读一遍以后就没掉啦。
尝试一下,果然,只要不close,readline()、read(size)就会继续往后面读,否则就从头开始。
4.readlines中的strip说是去掉换行符,但以前学的是去掉空格啊 于是我做了以下尝试
line = ['123','222','231']
for a in line:
... print(a)
...
123
222
231
line = ['123\n','222\n','231\n']
for a in line:
... print(a)
...
123
222
231
line = ['123\n','222\n','231\n']
for a in line:
... print(a.strip())
...
123
222
231
所以strip()不仅可以去掉空格,还可以去掉换行符,制表符。