#encoding=utf-8 #author:zhouyu
os這個模塊是用來對系統文件的一些基本操作的,比較創建文件,修改文件以及刪除文件。
文件的基本操作有以下幾種:
r,以只讀的形式打開文件 w,以只寫的形式打開這個文件,如果這個文件存在就覆蓋這個文件來寫東西,否則創建文件 a,在文件後面加上你想加的內容,也就是append rb,以只讀的形式打開一個二進制文件 wb,以只寫的形式打開一個二進制文件,如果這個文件存在就覆蓋這個文件來寫東西,否則創建文件 ab,在一個二進制文件後面加上你想加的內容,也就是append r+,以讀寫的形式打開一個文件,如果這個文件不存在會報錯 w+,以讀寫的形式打開一個文件,如果這個文件存在可以覆蓋這個文件來寫東西,否則創建文件 a+,以讀寫的形式打開文件可以在文件後面加上你想加的內容,也就是append rb+,wb+和ab+我就不解釋了
一般來說,如果你想獲取這個文件的內容或者你想修改文件的信息,就必須要先打開文件。
import os #導入os模塊 test_file = 'C:\\test.txt' opentest = open(test_file,'r') #以只讀的形式打開文件 read_test = opentest.read() #把文件內容儲存在opentest變量 print(read_test)
不管閱讀什麼文件,Python閱讀時候有個光標,它是用來記錄你讀取到哪裏的一個虛體,
等你下次來讀取文件的時候,就會從這個光標開始讀起,除非你關閉文件重新打開這個文件,
或者你把這個光標調到你想開始讀取的地方,因爲上面我們把這個文件讀完了,你現在再讀
的話就閱讀不了,因爲光標在最後了。
print("now I want to continue read above file") read_test1 = opentest.read() print(read_test1)
現在我們可以看看這個光標在哪裏
print(opentest.tell())
打印出來的結果是91,這就可以說明光標是在第91個字符那裏,如果你想重新閱讀這個文件,
可以通過以下命令來調整光標
print(opentest.seek(0))
再讓讀這個文件把內容給read_test1變量
read_test1 = opentest.read()
這樣你就又把你的光標調爲0了,下面我們再打印我們閱讀的文件
print(read_test1)
python是比較笨的,上面寫了只讀,它就不能寫文件,如果你把以下代碼的#去掉就會報錯
opentest.write("this is test")
記住每次用完文件都要關閉文件。以下代碼是關閉文件
opentest.close()
下面是寫的操作,不過一般不推薦這個,因爲你用w的話python會創建一個文件,如果這個文件
存在,它就會把這個文件覆蓋,也就是說文件的內容會被清空,這是很危險的
opentest = open(test_file,'w') opentest.write("you will found your file'content be clear,and rewrite this!!!") opentest.close()
如果你不想這樣,只想在文件最後添加內容的話可以通過以下方法:
opentest = open(test_file,'a') opentest.write("\nthis is append statement !!!") opentest.close()
執行完這個你可以去看看你的文件裏面是不是有增加上面的內容
如果我只想看看前5行的內容怎麼辦呢,其實有兩種方法,不過你的文件一定要有5行
下面這種是最高效的
count = 0 test_file = 'C:\\test.txt' opentest = open(test_file,'r') for i in opentest: if count <= 5: count =+1 print(i) opentest.close()
下面這種是相對比較低效的
count = 0 test_file = 'C:\\test.txt' opentest = open(test_file,'r') for i in range(5): if count <= 5: count =+1 print(opentest.readline()) opentest.close()
爲什麼它們會有高低效之分呢,是因爲第一種是利用迭代器,每次只在文件裏面取
一條數據,用完就刪除這個數據,而第二種是把文件裏面所有的內容都取出來,如
果你的文件有20G,那你就要等很久,而且你的內存一下子放20G也不大可能,所以
一般都用第一種高效方法