作爲入門,我們將會學習一些基本的I/O操作,如果需要其他更高級的操作可以參考官方文檔。
標準輸入輸出
也就是從屏幕讀入或者從屏幕輸出。
輸出很簡單,就是我們一直在使用的print,我就不舉例了。
輸入的話,主要是input,之前python2.x還有input_raw,但是python3已經把它刪掉了,所以我們就只說input
input的參數是我們需要顯示給用戶的提示信息。
而用戶的輸入會作爲input返回值從而被獲取。
舉個簡單的例子:
name=input("您的名字是什麼?")
print("您的名字是:",name)
打開和關閉文件
上面說了標準輸入輸出,接下來我們要開始學習對文件的讀寫了。
open函數
顧名思義,是用來打開一個文件的函數。
opne函數一共有三個參數:
第一個是我們要打開的文件的路徑
第二個是我們要打開的方式(與C語言比較類似,稍後會講解)
第三個是緩衝區大小,如果缺省或者設置爲負值會採用系統默認的緩衝區大小,如果是正數,那這個數就是緩衝區的大小,如果是0,則不緩衝。
我們先舉個例子:
fi=open("D:\\cgg.txt","r")
fi=open("D:\\cgg.txt","r",10)
下面我們來詳細說一下參數。
第一個參數沒有什麼好說的,只需要提一點,那就是如果要讀取的文件和程序在同一個路徑下,只要寫文件名即可,不需要寫出完整的路徑,否則需要寫完整。
第二個參數是用來表示這個流的性質。有的如下表:
模式 | 描述 |
---|---|
t | 文本模式 (默認)。 |
x | 寫模式,新建一個文件,如果該文件已存在則會報錯。 |
b | 二進制模式。 |
+ | 打開一個文件進行更新(可讀可寫)。 |
U | 通用換行模式(不推薦)。 |
r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。 |
rb | 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。一般用於非文本文件如圖片等。 |
r+ | 打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
rb+ | 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。一般用於非文本文件如圖片等。 |
w | 打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。 |
wb | 以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。 |
w+ | 打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。 |
wb+ | 以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。 |
a | 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。 |
ab | 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。 |
a+ | 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。 |
ab+ | 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。 |
當然了,你並不需要把這個背下來(除非你要考試)。
需要用的時候查一下就好了。把幾個常用的記下就好。
我們可以對上面這個表做一下簡單的整理:
模式 | r | r+ | w | w+ | a | a+ |
---|---|---|---|---|---|---|
讀 | + | + | + | + | ||
寫 | + | + | + | + | + | |
創建 | + | + | + | + | ||
覆蓋 | + | + | ||||
指針在開始 | + | + | + | + | ||
指針在結尾 | + | + |
File的屬性
我們上面的那個例子,實際上是用open創建了一個file對象,那麼file有什麼屬性呢?
file一共有四個屬性:
屬性 | 描述 |
---|---|
file.closed | 返回true如果文件已被關閉,否則返回false。 |
file.mode | 返回被打開文件的訪問模式。 |
file.name | 返回文件的名稱。 |
我們可以舉個例子:
fi=open("D:\\cgg.txt","r")
print(fi.closed)
print(fi.mode)
print(fi.name)
輸出結果如下:False r D:\cgg.txt(換行略去)
這三個屬性應該是比較好理解的,我就不多說了。
close方法
如字面意思,是用它關閉文件的,把緩衝區裏剩下的數據寫入內存,或者寫入硬盤。
使用也很簡單:
fi=open("D:\\cgg.txt","r")
print(fi.closed)
fi.close()
print(fi.closed)
運行結果:false true
讀寫文件
我們不可能只是打開和關閉文件,我們肯定要讀取或者寫入數據,所以我們就來學習一下讀寫的方法。
write方法
write可以將字符串寫入文件。
我們舉個例子:
fi=open("D:\\cgg.txt","w")
fi.write("cgg")
fi.close()
這裏就成功地把cgg寫入了cgg.txt
read方法
read用來從文件中讀取字符串。
它有一個可以缺省的參數,用來指定讀取的字節數。
如果缺省,它會讀儘可能多的數據,可能直到文件結束。
舉個例子:
fi=open("D:\\cgg.txt","w")
fi.write("cgg")
fi.close()
fi=open("D:\\cgg.txt","r")
gcg=fi.read()
print(gcg)
這樣我們就成功的把我們之前寫入的cgg又讀取出來了。
文件定位
我們直到,我們在打字的時候,或者說像我此時此刻在打blog一樣,我們屏幕上會閃爍着光標,來表示我們接下來的輸入的位置。讀取或寫入文件也是一樣,我們也需要直到,我們當前的”光標“在哪,甚至必要的時候對它進行必要的操作。
tell方法
tell方法可以告訴我們,我們的”光標“在距離文件開頭多少字節的位置,比如:
fi=open("D:\\cgg.txt","w")
fi.write("cgg")
print(fi.tell())
fi.close()
運行結果是3
seek方法
seek是幫助我們改變光標位置的方法。
它有兩個參數
第一個是偏移量,也就是我們要移動多少字節。
第二個是參考位置,它有三種標號,0是從文件開始處,1表示從當前位置,2表示從文件末尾。
我們舉個例子:
fi=open("D:\\cgg.txt","w")
fi.write("cgg")
fi.seek(2,0)
fi.write("ggc")
fi.close()
fi=open("D:\\cgg.txt","r")
gcg=fi.read()
print(gcg)
運行結果是::cgggc
重命名和刪除文件
對文件進行讀寫是不需要什麼模塊的,但當我們想對文件進行一些操作時,我們就需要一些模塊的幫助了。
我們今天要用的就是os模塊,它可以幫助我們重命名或刪除文件。
rename方法
rename是用來重命名的函數,它有兩個參數,一個是以前的名字,一個是要改成的名字。
我們看個例子:
import os
os.rename("D:\\cgg.txt","D:\\ggc.txt")
這樣,文件就從cgg變成了ggc
remove方法
這個方法,只有一個參數,就是要刪除的文件。
例子如下:
os.remove("D:\\ggc.txt")
這樣就ok了。
python對目錄的操作
我們除了可以操作文件,我們也可以操作文件夾。
mkdir方法
依然是在os模塊下,他只有一個參數,就是要創建的目錄的名字和路徑。
比如:
os.mkdir("D:\\cggggc")
chdir方法
這個方法是用來改變當前目錄。
什麼意思?
還記得之前我說的嗎?如果文件不在當前目錄下,就需要寫出完整的路徑
而這個方法就是用來設置當前目錄的。
比如:
os.chdir("D:\\")
os.mkdir("cggggc")
這兩個語句和上面mkdir的例子是等價的。
getcwd方法
既然有改變當前目錄的方法,肯定有獲取當前目錄的方法,這就是getcwd:
os.chdir("D:\\")
print(os.getcwd())
這個運行結果就是輸出D盤
rmdir方法
既然有了新建目錄,肯定也可以刪除。
這就是rmdir做的:
os.rmdir("cggggc")
那麼今天的學習基本就結束了,更多的方法和函數我們以後有時間再學習。