溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python文件讀寫

發(fā)布時間:2020-08-05 20:46:21 來源:網(wǎng)絡(luò) 閱讀:295 作者:CallousMaster 欄目:編程語言

python文件讀寫


讀寫文件是最常見的IO操作。Python內(nèi)置了讀寫文件的函數(shù),用法和C是兼容的。

  • 讀寫文件前,我們先必須了解一下,在磁盤上讀寫文件的功能都是由操作系統(tǒng)提供的,現(xiàn)代操作系統(tǒng)不允許普通的程序直接操作磁盤,所以,讀寫文件就是請求操作系統(tǒng)打開一個文件對象(通常稱為文件描述符),然后,通過操作系統(tǒng)提供的接口從這個文件對象中讀取數(shù)據(jù)(讀文件),或者把數(shù)據(jù)寫入這個文件對象(寫文件)。

#文件操作,創(chuàng)建文件對象,通過open()函數(shù)創(chuàng)建文件對象
mode:代表文件要執(zhí)行的操作的類型
r:讀模式
w:寫模式(每次寫入文件之前都會先將文件中的內(nèi)容清空,之后重新寫入)
a:添加模式(每次寫入文件時,不會清空文件內(nèi)容)

import time;
#encoding=utf-8 文件操作的字符編碼
file=open('hiahia','r',encoding='utf-8');
#只能做讀操作 read方法是讀取文件中所有的內(nèi)容 (不適用)
print('文件中的內(nèi)容有:%s'%file.read());
#readline 讀取一行的內(nèi)容 (適用)
print('文件中的第一行的內(nèi)容為:%s'%file.readline())
#readlines讀取一行的內(nèi)容,會將文件中每一行的內(nèi)容生成為列表中的一個元素 (不適用)
lists=file.readlines();
for line in lists:
    print("行內(nèi)容為:%s"%line)
#在操作完隊友的文件對象時,一定要關(guān)閉文件對象
file.close();#寫入模式的時候,沒有執(zhí)行close方法,內(nèi)容不會持久化保存到文件中
#如果不寫close,默認解釋器自動幫你關(guān)閉文件,但是將損耗更多的解釋器性能

#寫模式(w):寫入內(nèi)容,會將文件的原始內(nèi)容清空

file1=open('hiahia','w',encoding='utf-8');

#寫入的方法

file1.write('hiahia is hiahia')
time.sleep(10)#python為單線程工作,休眠當前線程,延緩程序執(zhí)行close方法
file1.close();#在python程序中,如果用戶沒有手動去close文件對象,那么python會在底層,自動幫你close
print('休眠已結(jié)束!')

#添加模式(a):寫入內(nèi)容,不會修改文件的原內(nèi)容

file2=open('hiahia','a',encoding='utf-8')
file2.write("\n山間的風(fēng)");
file2.close();

#困擾:每次在創(chuàng)建完file對象的時候 都要調(diào)用close關(guān)閉
#with語句會在末尾自動關(guān)閉文件對象

with open('HelloWorld','r',encoding='utf-8') as file:
    print(file.read())

#這時無需關(guān)閉 文件對象了!

#r+(讀寫模式) w+(寫讀模式) a+(追加讀模式)

#讀寫模式:既能寫,又能讀。以讀為主,以寫為輔

with open('hiahia','r+',encoding='utf-8') as file:
    print(file.read())#讀取文件內(nèi)容
    file.write('hehe')#寫讀模式會將寫入的內(nèi)容放置在文件內(nèi)容的末尾處#從文件的開頭覆蓋文件的原始內(nèi)容

#寫讀模式:可讀可寫,清空文件后寫入

with open('hiahia','w+',encoding='utf-8') as file:
    file.write('hello python!')
    file.write('\nhello python!')
    #seek方法的作用是移動文件的句柄0代表句柄中的起始位置
    file.seek(0)
    print(file.read())

#追加讀模式:最合適的既能寫又能讀的模式,追加在文件的末尾處

with open('hiahia','a+',encoding='utf-8') as file:
    file.write('hiahiahiahiahia');
    file.seek(0)
    #tell查詢當前文件句柄的值number
    print(file.read())

文件操作的方法


#tell:獲取當前文件指針的位置(在傳輸發(fā)生異常的時候 記錄 當前文件指針的位置)
#seek:設(shè)置當前文件指針(開始續(xù)傳的時候 seek重新定位文件(tell)) 斷點續(xù)傳:在兩臺主機傳輸文件的過程中 如果有一臺主機發(fā)生了故障 那么 文件會終止傳輸 那么在程序回復(fù)正常的時候 再次傳輸文件
#是否需要將文件重新傳輸 500MB文件
#turncate:截斷文件 清空文件中的內(nèi)容

with open('hiahia','r',encoding='utf-8') as file:
    print('文件的默認位置:%s'%file.tell())
    print(file.read(10))#讀取文件內(nèi)容
    print('現(xiàn)在指針的位置:%s'%file.tell())
    file.seek(0)
    print(file.read())

#turncate方法的作用 在寫模式 或讀寫模式下

with open('HelloWorld','r+',encoding='utf-8') as file:
    file.truncate();
向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI