python之文件的基本操作

#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也不大可能,所以

一般都用第一種高效方法


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章