python之IO同步編程Part1

元類(lèi)看不進(jìn)去
然后 既然我在看路徑的時(shí)候接觸了os內(nèi)庫(kù)
那就讓我來(lái)看看IO編程吧 比較好理解..

Python內(nèi)置的os模塊可以直接調(diào)用操作系統(tǒng)提供的接口函數(shù)
所以我覺(jué)得io模塊就可以看成是可以直接調(diào)用內(nèi)存提供的接口函數(shù)

讀寫(xiě)之類(lèi)的具體操作方法我在內(nèi)置函數(shù)篇下面已經(jīng)寫(xiě)過(guò)啦,所以這里只補(bǔ)充之前不知道噠~
1.使用with語(yǔ)句操作文件IO是個(gè)好習(xí)慣。
with 語(yǔ)句適用于對(duì)資源進(jìn)行訪(fǎng)問(wèn)的場(chǎng)合,確保不管使用過(guò)程中是否發(fā)生異常都會(huì)執(zhí)行必要的“清理”操作,釋放資源,比如文件使用后自動(dòng)關(guān)閉、線(xiàn)程中鎖的自動(dòng)獲取和釋放等。python with的相關(guān)知識(shí)
然而我只看了我這里用到的一種用法。

值得注意的是:
我在寫(xiě)入文件的時(shí)候,是重新開(kāi)始寫(xiě)而不是在后面添加,且會(huì)返回字符數(shù)
但是為什么調(diào)用stringIO的時(shí)候 就可以輸出一整串呢?
代碼如下:

>>> 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("測(cè)試")
... 
2```
然后我的文件里就只有測(cè)試兩個(gè)字啦

from io import StringIO
f = StringIO()
f.write('Hello')
5
f.write(' ')
1
f.write('world')
5
print(f.getvalue())
Hello world```

然后我就這樣測(cè)試了一下

>>> with open('Desktop/python/test.py','w') as  f:
...     f.write("測(cè)試")
...     f.write('再一次測(cè)試')
... 
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的時(shí)候被打開(kāi),可以多次傳入數(shù)據(jù),在被讀取以后就重新變成了空的,相當(dāng)于我們把內(nèi)存里的東西取出來(lái)了,就空啦。
文件的w狀態(tài)相當(dāng)于創(chuàng)建了一個(gè)內(nèi)存,往內(nèi)存中輸入數(shù)據(jù)。結(jié)束w的時(shí)候把內(nèi)存中的數(shù)據(jù)全部輸入文件然后兩者均關(guān)閉,且文件中的原數(shù)據(jù)都會(huì)沒(méi)掉,因?yàn)檩斎霑r(shí)會(huì)整個(gè)代替掉。讀取的時(shí)候也是如此,反一反,把文件中的數(shù)據(jù)弄到內(nèi)存中,調(diào)出來(lái)讀一遍以后就沒(méi)掉啦。
嘗試一下,果然,只要不close,readline()、read(size)就會(huì)繼續(xù)往后面讀,否則就從頭開(kāi)始。

4.readlines中的strip說(shuō)是去掉換行符,但以前學(xué)的是去掉空格啊 于是我做了以下嘗試

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()不僅可以去掉空格,還可以去掉換行符,制表符。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,725評(píng)論 25 709
  • 我叫林小溪,前面拉著我的手拖著我走的男子叫王磊。 我是xx大學(xué)的一名大學(xué)生,來(lái)自一個(gè)偏遠(yuǎn)的小山村,貧寒的家境無(wú)力支...
    回不來(lái)的閱讀 355評(píng)論 2 2
  • 昨晚跟一個(gè)不是很熟悉的朋友散步,其實(shí)我早就知道她的性格跟我不是很合,我是會(huì)主動(dòng)選擇自己舒適區(qū)的人,但是她覺(jué)得無(wú)聊跟...
    蘇三男閱讀 111評(píng)論 0 0

友情鏈接更多精彩內(nèi)容