Python基礎筆記系列十一:標準輸入輸出、檔案讀寫和指標等操作

來源:互聯網
上載者:User

標籤:seek   mod   關閉   大小   ack   傳遞   name   問題   blog   

  本系列教程供個人學習筆記使用,如果您要瀏覽可能需要其它程式設計語言基礎(如C語言),why?因為我寫得爛啊,只有我自己看得懂!!

  • 標準輸入輸出
    一、輸入
      在sublime中這個時候需要安裝SublimeREPL外掛程式。 Ctrl+shift+p 鍵入 install packages,再繼續鍵入 SublimeREPL 安裝即可然後每次編譯啟動並執行操作是:tools->sublimeREPL->python->python-Run current file。點擊之後會出現新的頁面*REPL*[python],作為新的控制台,可以輸入輸出互動。可查看另一篇,傳送門:Python基礎筆記系列四:工具的安裝與配置
    1)使用raw_input()函數
    1 buff = raw_input(‘please input :‘)  #不管輸入什麼都是字串類型2 print buff3 print type(buff)

    2)使用input()函數

    1 buff2 = input(‘please input :‘)  #輸入如果為數字就是int型2 print buff23 print type(buff2)

    二、輸出

      最簡單的輸出方法是print語句,你可以給它傳遞零個或多個逗號隔開的運算式,或者使用預留位置。
    例子:
    1 num =2002 print 1,3,5,‘num=%d‘%num

    輸出:

    1 1 3 5 num=200

     

  • 檔案讀寫
    一、開啟和關閉檔案
      首先要對檔案進行操作就要先開啟一個檔案,以建立file對象,然後才能對它進行讀寫等操作。

    #1.開啟:使用open函數
    #2.關閉:使用close函數:重新整理緩衝區裡任何還沒有寫入的資訊,並關閉檔案,之後便不可再對該檔案進行讀寫。
    # 在close之前也可以調用flush方法重新整理緩衝區
    # fil = open(檔案名稱,開啟檔案的模式,緩衝區), 其中後面兩個參數可以省略,模式有讀(r)、寫(w)、追加(a)等,
    #緩衝區(等於0:不會寄存,等於1:寄存一行,大於1:寄存區的緩衝大小,小於0:系統預設緩衝區大小)
    二、讀取檔案
      在以‘r’模式開啟檔案以後可以調用read函數一次性將檔案裡的內容全部讀取出來,也可以每次指定讀取多少位元組。
    例子:

    1 fil1 = open(‘yyc.txt‘,‘r‘,-1) #讀 檔案必須存在(目前是目前的目錄下)2 # buff3 =fil1.read()   #一次性讀完3 buff4 =fil1.read(100)  #讀100個位元組4 # print buff3+","+buff4  #這裡如果先read()再read(100) 則buff4為空白,因為read()已經讀完整個檔案了,就像c中指標已經到最後了。可以通過fil1.tell()函數列印指標當前位置5 print buff46 fil1.close()  #關閉檔案

    三、寫檔案
      可以通過‘w’的方式開啟檔案,就可以建立一個可以寫的檔案對象。如果檔案存在則清空檔案再寫,如果檔案不存在則建立。
    例子:

    1 fil = open(‘yyc.txt‘,‘w‘,-1) #寫 如果檔案存在則清空檔案再寫,如果檔案不存在則建立2 fil.write("123456hello")3 fil.flush()   #寫完最好重新整理一下4 fil.close()   #關閉檔案

    四、讀寫檔案r+、w+
      ‘r‘模式開啟的檔案建立的對象只能用read函數讀取檔案的內容,‘w’模式開啟的檔案又只能往裡寫內容。如果想實現在一個檔案關閉前既可以往裡寫內容,又可以讀取內容怎麼辦呢?這就是‘r+’和‘w+’所實現的功能。但是個人還是建議在一個檔案開啟關閉期間要麼讀要麼寫,因為這樣子會出現很奇怪的問題,可仔細閱讀下面的例子:
    ‘w+’模式例子1:如果在開啟檔案和關閉檔案之間先執行寫操作然後讀操作,最後讀出的內容為空白。

    1 #先寫後讀2 fil5 = open(‘yyc.txt‘,"w+",0)  #既寫又讀  如果檔案存在則先清空檔案,如果檔案不存在則建立3 fil5.write(‘b‘)  #先寫入4 fil5.flush()   #寫完最好重新整理一下5 buff2 =fil5.read()   #因為此時指標指向寫入內容的後面,所以內容為空白6 print ‘w+模式先寫後讀: ‘+buff2  #讀出的內容是未覆蓋的內容,這裡為空白啦,因為此時指標指向寫入內容的後面,即文檔末尾7 fil5.close()

    ‘w+’模式例子2:如果在開啟檔案和關閉檔案之間先執行讀操作然後寫操作,讀出的內容也為空白。

    1 #先讀後寫2 fil5 = open(‘yyc.txt‘,"w+",0)  #既寫又讀  如果檔案存在則先清空檔案,如果檔案不存在則建立3 buff2 =fil5.read()   #由於清空了檔案,所以內容為空白4 print ‘w+模式先讀後寫: ‘+buff2  #讀出的內容是未覆蓋的內容,這裡還沒寫寫入,所以為空白5 fil5.write(‘123456‘)  #6 fil5.flush()   #寫完最好重新整理一下7 fil5.close()

    從上面兩個例子可以看出,在以‘w+’模式開啟檔案並同時執行讀寫操作時,不管是先寫後讀還是先讀後寫,讀出的內容都是空,但是其中的道理各有不同哦(代碼注釋裡差不多也清楚了)。
    ‘r+’模式例子1:如果在開啟檔案和關閉檔案之間先執行寫操作然後讀操作,讀出的內容是寫入後未覆蓋的內容

    1 #先寫後讀2 fil3 = open(‘yyc.txt‘,"r+",-1)   #既讀又寫 從檔案開始位置覆蓋內容3 fil3.write(‘66666‘)4 fil3.flush()   #寫完最好重新整理一下5 buff2 = fil3.read()     #必須先重新整理再做讀操作,6 print ‘r+模式先寫後讀:‘+buff2   #讀出的內容是未覆蓋的內容,因為指標在寫入檔案後指向了寫入後的位置,即文檔末尾7 fil3.close()

    ‘r+‘模式例子2:如果在開啟檔案和關閉檔案之間先執行讀然後寫操作,運行報錯。

    1 #先讀後寫(報錯)2 # fil3 = open(‘yyc.txt‘,"r+",-1)   #既讀又寫 從檔案開始位置覆蓋內容3 # buff2 = fil3.read()     #先讀4 # print ‘r+模式先讀後寫:‘+buff2  #輸出的內容是覆蓋後的內容,也就是說他執行過write了?很奇怪,並且報錯5 # # fil3.flush()  #加不加效果一樣  6 # fil3.write(‘66666‘)#後寫7 # fil3.flush()   #寫完最好重新整理一下8 # fil3.close()

    五、追加寫入檔案a,a+
      如果想保留檔案現有內容,只是把新內容加入原有檔案的尾部或者說新增檔案內容而不影響原有內容,則可以用a或者a+模式。
    ‘a+’模式例子1:如果在開啟檔案和關閉檔案之間先執行寫操作然後讀操作,最後讀出的內容為空白。

    1 #先寫後讀2 fil6 = open(‘yyc.txt‘,‘a+‘,0) #追加 如果檔案存在則追加內容,如果檔案不存在則建立3 fil6.write(‘1234‘)   #4 fil6.flush()   #寫完最好重新整理一下 ,查看檔案寫入成功5 print ‘a+模式先寫後讀: ‘+fil6.read() #但讀出來是空,因為此時指標指向寫入內容的後面6 fil6.close()  #關閉檔案

    ‘a+’模式例子2:如果在開啟檔案和關閉檔案之間先執行讀操作然後寫操作,讀出的內容也為為空白。

    1 #先讀後寫2 fil6 = open(‘yyc.txt‘,‘a+‘,0) #追加 如果檔案存在則追加內容,如果檔案不存在則建立3 print ‘a+模式先讀後寫: ‘+fil6.read() #但讀出來是空4 fil6.write(‘1234‘)   #5 fil6.flush()   #寫完最好重新整理一下 ,查看檔案寫入成功6 fil6.close()  #關閉檔案

    綜上6個例子,其實r+,w+,a+有異曲同工之處,也就是檔案指標指向的位置,決定了讀寫的內容。只要理解了指標在檔案中的位置,就不難理解檔案的讀寫啦。

  • 檔案的基本屬性

    下面的例子中展示了檔案的基本屬性。
    例子:

    1 #-----------檔案屬性-----------2 fil = open(‘yyc.txt‘,‘a‘,-1) #追加3 print fil.mode   #返回被開啟檔案的訪問模式4 print fil.closed #是否已經關閉5 print fil.name   #返回被開啟檔案的名字6 print fil.softspace #

    輸出:

    1 a2 False3 yyc.txt4 0
  • 檔案指標(seek方法)
      前面說到w+模式的先寫後讀,開啟檔案為w+模式下時,如果檔案存在則先清空檔案,如果檔案不存在則建立,在先寫入檔案後發現指標指向寫入內容的後面,再來讀取檔案內容,則讀出來的內容是空的,我們可以通過seek()函數將指標指向檔案開始的位置再讀。
    例子:

    1 fil5 = open(‘yyc.txt‘,"w+",0)  #既寫又讀  如果檔案存在則先清空檔案,如果檔案不存在則建立2 fil5.write(‘ppppppppp‘)  #先寫入內容3 fil5.flush()   #寫完最好重新整理一下,注意:此時指標在文檔末尾4 fil5.seek(0)   #移動指標到文檔開頭5 buff2 =fil5.read()   #由於清空了檔案,所以內容為空白6 print ‘w+模式先寫再移動指標最後讀: ‘+buff2  #讀出的內容是剛剛寫入的內容7 fil5.close()

    輸出:

    1 w+模式先寫再移動指標最後讀: ppppppppp
  • 檔案的刪除和重新命名
      注意:需要匯入os包或os包裡的相應方法
    1.重新命名用os.rename(curret_file_name,new_file_name)方法:兩個參數,當前檔案名稱和新檔案名稱
    2.刪除檔案用os.remove(file_name)方法:一個參數,需要刪除的檔案名稱

      
      


      
      


      

Python基礎筆記系列十一:標準輸入輸出、檔案讀寫和指標等操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.