Python基礎筆記系列十一:標準輸入輸出、文件讀寫和指針等操作
本系列教程供個人學習筆記使用,如果您要瀏覽可能需要其它編程語言基礎(如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 buff 3 print type(buff)
2)使用input()函數
1 buff2 = input(‘please input :‘) #輸入如果為數字就是int型 2 print buff2 3 print type(buff2)
二、輸出
最簡單的輸出方法是print語句,你可以給它傳遞零個或多個逗號隔開的表達式,或者使用占位符。
例子:1 num =200 2 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 buff4 6 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 a 2 False 3 yyc.txt 4 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基礎筆記系列十一:標準輸入輸出、文件讀寫和指針等操作